抽象ファクトリパターン
I.概要
抽象ファクトリパターンは、デザインパターンの作成パターンでもあり、製品ファミリの構築に使用されます。抽象ファクトリパターンは、すべての形式のファクトリパターンの中で最も一般的な形式です。抽象ファクトリとは、複数の役割がある場合に使用されるファクトリパターンを指します。抽象ファクトリパターンは、クライアントへのインターフェイスを提供できます。これにより、クライアントは、製品を指定しなくても、複数の製品ファミリの製品オブジェクトを作成できます。
2.モード構造図
3、Javaコードの実装
果物を例にとってみましょう。まず、果物のインターフェースと果物の工場のインターフェースを別々に作成する必要があります。
package 抽象工厂模式;
public interface Fruit {
// 生产水果-接口
public void get();
}
package 抽象工厂模式;
public interface FruitFactory {
public Fruit getApple();
public Fruit getBanana();
}
具体的なフルーツの抽象クラスを作成し、具体的なフルーツの抽象クラスにフルーツインターフェイスを実装させます
package 抽象工厂模式;
public abstract class Apple implements Fruit{
// 苹果抽象类
public abstract void get();
}
package 抽象工厂模式;
public abstract class Banana implements Fruit{
// 香蕉抽象类
public abstract void get();
}
特定の果物カテゴリを作成します。各果物はAとBの2つのレベルに分けられます。
package 抽象工厂模式;
//Apple_A 继承Apple
public class Apple_A extends Apple{
@Override
public void get() {
System.out.println("生产A级-苹果");
}
}
package 抽象工厂模式;
// Apple_B继承Apple类
public class Apple_B extends Apple{
@Override
public void get() {
System.out.println("生产B级-苹果");
}
}
Aレベルの果物とBレベルの果物をそれぞれ生産するタイプAファクトリとタイプBファクトリを作成し、ファクトリインターフェイスを実装します
package 抽象工厂模式;
// FruitFactory_calssA 要去实现 FruitFactory
public class FruitFactory_calssA implements FruitFactory{
// A级水果工厂只生产A级水果
@Override
public Fruit getApple() {
// 生产A级苹果
return new Apple_A();
}
@Override
public Fruit getBanana() {
// 生产A级香蕉
return new Banana_A();
}
}
public class FruitFactory_calssB implements FruitFactory{
// B级水果工厂只生产B级水果
@Override
public Fruit getApple() {
// 生产B级苹果
return new Apple_B();
}
@Override
public Fruit getBanana() {
// 生产B级香蕉
return new Banana_B();
}
}
デモを呼び出す*
package 抽象工厂模式;
public class test {
public static void main(String[] args) {
FruitFactory f1 = new FruitFactory_calssA();
FruitFactory f2 = new FruitFactory_calssB();
// Apple
Fruit apple_A = f1.getApple();
apple_A.get();
Fruit apple_B= f2.getApple();
apple_B.get();
// Banana
Fruit banana_A = f1.getBanana();
banana_A.get();
Fruit banana_B = f2.getBanana();
banana_B.get();
}
}
第四に、ファクトリメソッドパターンと抽象ファクトリパターンの比較
ファクトリメソッドパターンの各フォームは特定の問題の解決策であり、複数の製品シリーズ構造を対象としています。一方、抽象ファクトリパターンは複数の製品ファミリ構造を対象としており、製品内には複数の製品シリーズがあります。