ファクトリメソッドパターン
単純なファクトリパターン、
抽象ファクトリパターン、
抽象ファクトリ、データベース接続プールの単純な実装
1.定義:
オブジェクトを作成するためのインターフェイスの定義を参照しますが、このインターフェイスを実装するクラスがインスタンス化するクラスを決定し、ファクトリメソッドがクラスのインスタンス化をサブクラスに配置します。
2.利点:
各オブジェクトの作成ロジックが異なると、ファクトリの責任がますます大きくなり、保守が容易ではなくなります。ファクトリメソッドパターンには、オブジェクトごとに専用のファクトリがあります。
3.ファクトリメソッドパターンの4つの役割
抽象ファクトリ:ファクトリメソッドパターンのコア。オブジェクトを作成するファクトリは、このインターフェイスを実装する必要があります。
具象ファクトリ:抽象ファクトリを実装し、オブジェクトを作成するためのロジックを含み、オブジェクトを作成するためにアプリケーションによって呼び出される具象ファクトリクラス。
抽象オブジェクト:ファクトリメソッドパターンによって作成されたオブジェクトのスーパークラス
具象オブジェクト:抽象オブジェクトロールによって定義されたインターフェースを実装し、オブジェクトは具象ファクトリによって作成されます。
4.ファクトリメソッドパターンの簡単な実装
public interface IFactory {//抽象工厂
IProduct makeProduct();
}
public class FactoryA implements IFactory {//创建A产品的工厂
@Override
public IProduct makeProduct() {
return new ProductA();
}
}
public class FactoryB implements IFactory {//创建B产品的工厂
@Override
public IProduct makeProduct() {
// TODO Auto-generated method stub
return new ProductB();
}
}
public interface IProduct {//抽象对象
void doSomeThing();
}
public class ProductA implements IProduct {//具体对象A
@Override
public void doSomeThing() {
// TODO Auto-generated method stub
System.out.println("A");
}
}
public class ProductB implements IProduct {//具体对象B
@Override
public void doSomeThing() {
// TODO Auto-generated method stub
System.out.println("B");
}
}
public class Client {
public static void main(String[] args) {
IFactory factoryA = new FactoryA();//创建A工厂创建
IFactory factoryB = new FactoryB();//创建B工厂创建
IProduct productA = factoryA.makeProduct();//A工厂创建A对象
IProduct productB = factoryB.makeProduct();//B工厂创建B对象
}
}