Java ファクトリ パターンの 3 つの実際的なケースの分析
ファクトリ パターンは一般的に使用される設計パターンであり、オブジェクトの作成と使用を分離し、プログラムをスケーラビリティが向上します。 Java では、ファクトリ パターンの一般的な実践ケースとして、単純なファクトリ パターン、ファクトリ メソッド パターン、および抽象ファクトリ パターンの 3 つがあります。この記事では、これら 3 つの実際的なケースを詳細に分析し、具体的なコード例を示します。
シンプル ファクトリ パターンは、ファクトリ クラスを通じてオブジェクトを作成する最も基本的なファクトリ パターンです。単純なファクトリ パターンでは、クライアントはファクトリ クラスと対話するだけで済み、特定の製品クラスと直接対話する必要はありません。
以下では、単純なファクトリ パターンの実践を示すために、例としてグラフィカル オブジェクトの作成を取り上げます。
// グラフィカル インターフェイスを作成します。
パブリック インターフェイス Shape {
void draw();
}
// 特定のグラフィック クラスを作成します
public class Circle は Shape を実装します {
@Override public void draw() { System.out.println("画一个圆形"); }
}
public class Rectangle は Shape {
@Override public void draw() { System.out.println("画一个矩形"); }# を実装します##}
// ファクトリ クラスの作成
public class ShapeFactory {
public static Shape createShape(String type) { switch (type) { case "circle": return new Circle(); case "rectangle": return new Rectangle(); default: throw new IllegalArgumentException("不支持的图形类型"); } }}// クライアントの使用例
public class Client {
public static void main(String[] args) { Shape circle = ShapeFactory.createShape("circle"); circle.draw(); Shape rectangle = ShapeFactory.createShape("rectangle"); rectangle.draw(); }} 上記のコードでは、ShapeFactory ファクトリ クラスの createShape メソッドを通じて特定のグラフィック オブジェクトが作成されます。クライアントは、このメソッドを呼び出して対応するパラメータを渡すだけで、対応するグラフィック オブジェクトを取得し、後続の操作を実行できます。
パブリック インターフェイス Car {
void drive();}
// 特定の車のクラスを作成します
public class BenzCarimplements Car {
@Override public void drive() { System.out.println("开奔驰车"); }}public class BmwCarimplements Car {
@Override public void drive() { System.out.println("开宝马车"); }}
// ファクトリ インターフェイスを作成します
public インターフェイス CarFactory {
Car createCar();}// 特定のファクトリ クラスを作成します
public class BenzCarFactory が実装しますCarFactory {
@Override public Car createCar() { return new BenzCar(); }}public class BmwCarFactory は CarFactory を実装します {
@Override public Car createCar() { return new BmwCar(); }}// クライアントの使用例
public class Client {
public static void main(String[] args) { CarFactory benzFactory = new BenzCarFactory(); Car benzCar = benzFactory.createCar(); benzCar.drive(); CarFactory bmwFactory = new BmwCarFactory(); Car bmwCar = bmwFactory.createCar(); bmwCar.drive(); }} 上記のコードでは、CarFactory ファクトリ インターフェイスとそれに対応する特定のファクトリ クラスを通じて、特定の車オブジェクトが作成されます。クライアントは、対応するファクトリ クラスと対話して、対応する車オブジェクトを取得し、後続の操作を実行するだけで済みます。 #抽象ファクトリ パターン
以下では、抽象ファクトリ パターンの実践を示すために、例として携帯電話オブジェクトの作成を取り上げます。
// 携帯電話インターフェイスを作成します
パブリック インターフェイス Phone {void call();
// 特定の携帯電話クラスを作成します
public class ApplePhoneimplements Phone {@Override public void call() { System.out.println("使用苹果手机打电话"); }
public class HuaweiPhoneimplements Phone {
@Override public void call() { System.out.println("使用华为手机打电话"); }
}
// ファクトリ インターフェイスを作成します
パブリック インターフェイス PhoneFactory {Phone createPhone();
// 特定のファクトリ クラスを作成します
public class ApplePhoneFactoryimplements PhoneFactory {@Override public Phone createPhone() { return new ApplePhone(); }
public class HuaweiPhoneFactoryimplements PhoneFactory {
@Override public Phone createPhone() { return new HuaweiPhone(); }
}
// クライアントの使用例
public class Client {public static void main(String[] args) { PhoneFactory appleFactory = new ApplePhoneFactory(); Phone applePhone = appleFactory.createPhone(); applePhone.call(); PhoneFactory huaweiFactory = new HuaweiPhoneFactory(); Phone huaweiPhone = huaweiFactory.createPhone(); huaweiPhone.call(); }
上記のコードでは、特定の携帯電話オブジェクトが、PhoneFactory ファクトリ インターフェイスとそれに対応する特定のファクトリ クラスを通じて作成されます。クライアントは、対応するファクトリ クラスと対話して、対応する携帯電話オブジェクトを取得し、その後の操作を実行するだけで済みます。
要約:
上記では、ファクトリ パターンの 3 つの実際的なケース (単純なファクトリ パターン、ファクトリ メソッド パターン、および抽象ファクトリ パターン) を紹介しました。これら 3 つのモードにより、オブジェクトの作成と使用を効果的に分離し、プログラムのスケーラビリティを向上させることができます。実際の開発では、特定のニーズに応じて適切なファクトリー モードを選択して使用できます。
以上がJava ファクトリ パターンの 3 つの実際的な適用ケースを分析するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。