Java デザインパターン 〜Abstract Factory パターン〜

Androidアプリ作成の予備知識として、オブジェクト指向、クラスの組み合わせ方の王道としてデザインパターンに関して記載していきます。
作成したコードはgitにアップしてあります。
ちなみにEclipseで実装しました。

Abstract Factoryパターン

決められた一部の処理をごっそりと入れ替えることができる、デザインパターンです。

具体的に。。。

親クラスで、一通りの処理を実装しておき、変更、もしくはいろんなパターンで実装したい時に、この方法が使えます。
例として、JavaFXでは、Applicationクラスのstart()メソッドをオーバーライドするという形で実装されています。これは初めてプログラムを作成する人向けに記載しました、とりあえずは写経して動かしてみるのがいちばんだと思いますのでコードと動かすための予備知識的なことを記載しました。

実装サンプル

設計

ハローワールドのプログラムを作成します。ただし、表示する文言は実行するクラスによって変更できるように実装します。

実装

親クラス

gitのソースMain

public abstract class Main {

    public void hello() {
        String value = getValue();
        System.out.println(value);
    }
    //// 抽象メソッド ////
    protected abstract String getValue();
}

上の抽象メソッドは処理の中身がありません。これはこの「抽象クラス」を継承する子クラスで実装します。

子クラス

gitのソースChildA

public class ChildA extends Main {
    public static void main(String[] args) {
        ChildA main = new ChildA();
        main.hello();
    }

    @Override
    public String getValue() {
        return "Hello World";
    }
}

実行結果

こんな感じで、実行できます。

文言の変更

ここで、思うのは「ハローワールドはもういいかな?」というところだと思います。
なので、変更しようと思いますが。。。
この実装はこのまま残しておきます。
しかし、変更はしたいので。。。どーするか?

子クラスをもう1つ

gitのソースChildB

public class ChildB extends Main {
    public static void main(String[] args) {
        ChildB main = new ChildB();
        main.hello();
    }

    public String getValue() {
        return "Let's Java!";
    }
}

実装する内容はほとんど変わりませんが、ちょっと違います。
実行結果は以下の通り

こんな感じです。

でわでわ。。。



関連ページ一覧

Eclipse セットアップ

Java Install Eclipse~開発ツールのインストール~

TensorFlow C++環境~EclipseにCDTをインストール~

Setup OpenGL with Java~JOGLを使う準備 for Eclipse~

Eclipse Meven 開発手順~プロジェクトの作成~

Java OpenCV 環境セットアップ(on Mac)

Eclipse SceneBuilderを追加する

JavaFX SceneBuilder ~EclipseとSceneBuilder連携~

Java Basic一覧

Java Basic Level 1 ~Hello Java~

Java Basic Level2 ~Arithmetic Calculate~

Java Basic Level3 ~About String class~

Java Basic Level 4~Boolean~

Java Basic Level 5~If Statement~

Java Basic Summary from Level1 to 5

Java Basic Level 6 ~Traning of If statement~

Java Basic Level8 ~How to use for statement~

Java Basic Level 8.5 ~Array~

Java Basic Level 9~Training of for statement~

Java Basic Level 10 ~While statement ~

Java Basic Swing~オブジェクト指向~

Java Basic Swing Level 2~オブジェクト指向2~

サンプル実装~コンソールゲーム~

Java Basic インターフェース・抽象クラスの作り方

Java Basic クラスとは~Step2_1~

Java Basic JUnit ~テストスイートの作り方~

Git関連

Java Git clone in Eclipse ~サンプルの取得~

Eclipse Gitリポジトリの取得 ~GitからソースをPullしよう~

IntelliJ IDEA Git~Gitリポジトリからクローン~

JavaFX関連ページ

Eclipse SceneBuilderを追加する

JavaFX SceneBuilder ~EclipseとSceneBuilder連携~

JavaFX SceneBuilder~ボタンにメソッドを割り当てるワンポイント~

Java プロコンゲーム ~見た目の作成(SceneBuilderの使用)~

ステップアップ関連ページ一覧

Java 初めてでも大丈夫~ステップアッププログラミングのススメ~

ステップアッププログラミング~Java FxでHelloWorld解説~

Java StepUpPrograming~JavaFX で四則計算~

Java StepUpPrograming~JavaFXで画面切り替えを作る1~

Java StepUpPrograming~JavaFXで画面切り替え2ボタン作成~

Java StepUpPrograming~JavaFXで画面切り替え3アクション~

Java StepUpPrograming~JavaFXで画面切り替え4Pane切り替え~

Java StepUpPrograming~JavaFXで画面切り替え5WebEngine

JavaFX + ND4Jで機械学習準備

JavaFX + ND4J~数学への挑戦1:ND4Jのインストール~

JavaFX + ND4J~数学への挑戦2: 行列の計算~

Java + ND4J ~数学への挑戦3: ベクトル(配列)の作成方法~

オブジェクト指向関連ページ

[オブジェクト指向の概念1~OracleDocのチュートリアル1~](https://zenryokuservice.com/wp/2019/10/301. /%e3%82%aa%e3%83%96%e3%82%b8%e3%82%a7%e3%82%af%e3%83%88%e6%8c%87%e5%90%91%e3%81%ae%e6%a6%82%e5%bf%b5-%e3%80%9coracledoc%e3%81%ae%e3%83%81%e3%83%a5%e3%83%bc%e3%83%88%e3%83%aa%e3%82%a2%e3%83%ab%ef%bc%91/)

オブジェクト指向の概念2~クラスとは~