#(推奨チュートリアル:Java の 3 つのファクトリ パターン: 1. 特定の実装を気にせずにオブジェクト インスタンスを作成する機能を提供する単純ファクトリ パターン、2. ファクトリ メソッド パターン、3. を作成する機能を提供する抽象ファクトリ パターンオブジェクト インスタンス: 具体的なクラスを指定せずに、関連するオブジェクトまたは相互依存するオブジェクトのファミリーのためのインターフェイス。
Java 入門チュートリアル)
1. 単純なファクトリ パターン
単純なファクトリの定義:特定の実装を気にせずにオブジェクト インスタンスを作成する関数を提供します。作成されたインスタンスのタイプは、インターフェイス、抽象クラス、または特定のクラスのいずれかになります。
車のインターフェイスの実装
public interface Car { String getName(); }
Benz クラス
public class Benz implements Car { @Override public String getName() { return "Benz"; } }
BMW タイプ
public class BMW implements Car { @Override public String getName() { return "BMW"; } }
BMW とメルセデスベンツの両方を生産できる簡易工場
public class SimpleFactory { public Car getCar(String name){ if (name.equals("BMW")){ return new BMW(); }else if (name.equals("benz")){ return new Benz(); }else { System.out.println("不好意思,这个品牌的汽车生产不了"); return null; } } }
テストクラス
public class SimpleFactoryTest { public static void main(String[] args){ SimpleFactory simpleFactory = new SimpleFactory(); Car car = simpleFactory.getCar("BMW"); System.out.println(car.getName()); } }
テスト結果
BMW
2. ファクトリ メソッド パターン
ファクトリ インターフェイス
//定义一个工厂接口,功能就是生产汽车 public interface Factory { Car getCar(); }
Benz Factory
public class BenzFactory implements Factory { @Override public Car getCar() { return new Benz(); } }
BMW ファクトリー
public class BMWFactory implements Factory{ @Override public Car getCar() { return new BMW(); } }
テストカテゴリー
public class FactoryTest { public static void main(String[] args){ Factory bmwFactory = new BMWFactory(); System.out.println(bmwFactory.getCar().getName()); Factory benzFactory = new BenzFactory(); System.out.println(benzFactory.getCar().getName()); } }
テスト結果
BMW Benz
3. 抽象ファクトリ パターン
抽象ファクトリ
public abstract class AbstractFactory { protected abstract Car getCar(); //这段代码就是动态配置的功能 //固定模式的委派 public Car getCar(String name){ if("BMW".equalsIgnoreCase(name)){ return new BmwFactory().getCar(); }else if("Benz".equalsIgnoreCase(name)){ return new BenzFactory().getCar(); }else if("Audi".equalsIgnoreCase(name)){ return new AudiFactory().getCar(); }else{ System.out.println("这个产品产不出来"); return null; } } }
デフォルト ファクトリ
public class DefaultFactory extends AbstractFactory { private AudiFactory defaultFactory = new AudiFactory(); public Car getCar() { return defaultFactory.getCar(); } }
BMW 工場
public class BMWFactory extends AbstractFactory { @Override public Car getCar() { return new BMW(); } }
ベンツ工場
public class BenzFactory extends AbstractFactory { @Override public Car getCar() { return new Benz(); } }
テスト クラス
public class AbstractFactoryTest { public static void main(String[] args) { DefaultFactory factory = new DefaultFactory(); System.out.println(factory.getCar("Benz").getName()); } }
テスト結果
Benz
注: デザイン パターンを嘲笑する人もいれば、デザイン パターンを神として尊敬する人もいますが、私はその意見に同意します。
私の大まかな理解によれば、デザイン パターンの典型的な点は、コードを書く人とコードを呼び出す人の両方の苦痛を解決するということです。さまざまなシナリオにのみ適用されます。利用するか否か、どのように利用するかについては、慎重に検討する必要があります。
しかし、ただ使うためだけに使うのではなく、その繊細さは皆さんにゆっくり味わっていただくしかありません。
プログラミング関連の知識について詳しくは、プログラミング コースをご覧ください。 !
以上がJava の 3 つのファクトリー パターンとは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。