设计模式之工厂模式

工厂模式

简单工厂

通过参数动态创建继承自同一接口的类。

public class ShapeFactory {
    
   //使用 getShape 方法获取形状类型的对象
   public Shape getShape(String shapeType){
      if(shapeType == null){
         return null;
      }        
      if(shapeType.equalsIgnoreCase("CIRCLE")){
         return new Circle();
      } else if(shapeType.equalsIgnoreCase("RECTANGLE")){
         return new Rectangle();
      } else if(shapeType.equalsIgnoreCase("SQUARE")){
         return new Square();
      }
      return null;
   }
}

工厂方法

定义一个创建对象的接口,让其子类自己决定实例化哪一个工厂类,工厂模式使其创建过程延迟到子类进行。让其子类实现工厂接口,返回的也是一个抽象的产品。

public class CircleShapeFactory implement ShapeFactory {
   //使用 getShape 方法获取形状类型的对象
   public Shape getShape(){
      return new Circle();
   }
}

public class RectShapeFactory implement ShapeFactory {
   //使用 getShape 方法获取形状类型的对象
   public Shape getShape(){
      return new Rectangle();
   }
}

抽象工厂

围绕一个超级工厂创建其他工厂。

public class JinanPieFactory extends AbstractPieFactory {
   @Override
   public Pie makeApplePie(){
         return new SweetApplePie();
   }
   
   @Override
   public Pie makeBananaPie() {
      return new SweetBananaPie();
   }
}

public class YueyangPieFactory extends AbstractPieFactory {
   @Override
   public Pie makeApplePie(){
         return new XianApplePie();
   }
   
   @Override
   public Pie makeBananaPie() {
      return new XianBananaPie();
   }
}

public class FactoryProducer {
   public static AbstractPieFactory getFactory(String choice){
      if(choice.equalsIgnoreCase("JINAN")){
         return new JinanPieFactory();
      } else if(choice.equalsIgnoreCase("YUEYANG")){
         return new YueyangPieFactory();
      }
      return null;
   }
}
原文地址:https://www.cnblogs.com/aaroncnblogs/p/8609161.html