zoukankan      html  css  js  c++  java
  • 设计模式之工厂模式

    工厂模式

    简单工厂

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

    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;
       }
    }
  • 相关阅读:
    ASP.NET学习笔记(1)
    vs2005新建项目中没有ASP.NET WEB应用程序
    IE无法安装Activex控件
    【Android】SDK工具学习
    【英语】Bingo口语笔记(22)
    【Python】实践笔记
    【学习】纪录片笔记
    【英语】Bingo口语笔记(20)
    【英文】20141027 生词
    【英文】Bingo口语笔记(18)
  • 原文地址:https://www.cnblogs.com/aaroncnblogs/p/8609161.html
Copyright © 2011-2022 走看看