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!";
    }
}

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

こんな感じです。

でわでわ。。。