みなさん こんばんは。
今回はAbstract Factoryパターンについて書いていきます。
Abstract Factoryパターンは1つのFactoryクラスに複数のFactoryメソッドを持たせ、
主に実装環境に依存するような場合などに利用されます。
Abstract Factoryパターンの古典的な例として、WindowsやMacintoshなど、
複数のルック&フィールドのユーザインターフェースをまとめて切り替えるような例で使われたりします。
グループ化されたオブジェクト単位で切り替える場合に利用されるパターンがAbstract Factoryパターンと言えるでしょうか。
では簡単な例を見てみましょう。
// Abstract Factory基底インターフェース
public interface AbstractFactory {
public Product1 createProduct1();
public Product2 createProduct2();
}
// 製品基底インターフェース1
public interface Product1 {
public void sayHello();
}
// 製品基底インターフェース2
public interface Product2 {
public void goodNight();
}
// 製品実装クラス1
public class ConcreateProduct1 implements Product1 {
public void sayHell(){
System.out.println("こんにちは。こちらが製品1になります。");
}
}
// 製品実装クラス2
public class ConcreateProduct2 implements Product2 {
public void goodNight(){
System.out.println("こんばんは。こちらが製品2になります。");
}
}
// AbstractFactory実装クラス
public class ConcreateFactory implements AbstractFactory {
public Product1 createProduct1() {
return new ConcreateProduct1();
}
public Product2 createProduct2() {
return new ConcreateProduct2();
}
}
// クライアントクラス
public class Client {
public static void main(String args[]) {
AbstractFactory factory = new ConcreateFactory();
Product1 p1 = factory.createProduct1();
Product2 p2 = factory.createProduct2();
p1.sayHello();
p2.goodNight();
}
}
クラス図の通り実装してみました。
Abstract Factoryクラスの利点は、新たな(ファクトリ用の)サブクラスを容易に追加できる点に
あると思います。
人気ブログランキングへ
0 件のコメント:
コメントを投稿