デザインパターンの工場パターン01のGOF23

シンプルなファクトリパターンとFactory Methodパターン

コアファクトリパターン:分業

シンプルなファクトリパターンは、拡大するソースコードを変更する必要がOCP(オープンクローズPrincinple)の原則を満たしていません

クラスファクトリモードの方法は、一般的に、単純なファクトリパターンであり、コードの複雑さなどの複雑さを増大させます

通常のコード

パブリックインターフェイスカー{
  無効実行();
}

パブリッククラスアウディは{車を実装します
 @Override
 公共ボイドRUN(){
   System.out.printlnは( "アウディラン!!!");
 }
}
パブリッククラスBMWは車を{実装します
 @Override
 公共ボイドRUN(){
   System.out.printlnは( "BMWで実行!");
 }
}
パブリッククラスDemo01 {
  パブリック静的無効メイン(文字列[] args){
   車C1 =新しいアウディ()。
   カーC2 =新しいBMWの();
   
   c1.run();
   c2.run();
}
 

シンプルなファクトリパターン

パブリックインターフェイスカー{
  無効実行();
}

パブリッククラスアウディは{車を実装します
 @Override
 公共ボイドRUN(){
   System.out.printlnは( "アウディラン!!!");
 }
}
パブリッククラスBMWは車を{実装します
 @Override
 公共ボイドRUN(){
   System.out.printlnは( "BMWで実行!");
 }
}
/ **
 *シンプルファクトリパターンが
 破壊されたときにコードを変更する必要があります* OCP原則を変更
 * @author帆コードノック
 *
 * /
パブリッククラスCarFactory {
  {(String型の)パブリック静的カーgetCarを
   IF(type.equals(「アウディ」) ){
    新しい新しいアウディを返す();
   }){(type.equals( "BMW"はIF他)
    )新しいニューBMWを(返す;
   }他の{
    戻りNULL;
   }
  }
}
パブリッククラスDemo02 {
  パブリック静的無効メイン(文字列[] args){
   車C1 = CarFactory.getCar( "宝马")。
   カーC2 = CarFactory.getCar( "奥迪");
   
   c1.run();
   c2.run();
}
Factory Methodパターン
public interface Car {
  void run();
}
public class Bmw implements Car {
 @Override
 public void run() {
   System.out.println("BMW在奔跑!!!");
 }
}
public class Audi implements Car{
 @Override
 public void run() {
   System.out.println("奥迪在奔跑!!!");
 }
}
public interface CarFactory {
  Car getCar();
}
public class AudiFactory implements CarFactory{
 @Override
 public Car getCar() {
  return new Audi();
 }
}
public class BmwFactory implements CarFactory{
 @Override
 public Car getCar() {
  return new Bmw();
 } 
}
public class Client {
  public static void main(String[] args) {
   Car c1=new AudiFactory().getCar();
   Car c2=new BmwFactory().getCar();
   
   c1.run();
   c2.run();
  }
}

おすすめ

転載: www.cnblogs.com/code-fun/p/11311534.html