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;
       }
    }
  • 相关阅读:
    Bash Shell 快捷键
    vector-swap
    vector-swap
    vector-size
    Android网络篇
    应用 Valgrind 发现 Linux 程序的内存问题
    树莓派初学者?先做做这十个项目吧
    树莓派 (为学习计算机编程教育设计的一种微型电脑)
    微软windows10 IOT支持PI3之后,树莓派3更是将获得Android官方原生支持
    Linux基金会宣布JS Foundation基金会成立 前身为jQuery团队
  • 原文地址:https://www.cnblogs.com/aaroncnblogs/p/8609161.html
Copyright © 2011-2022 走看看