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;
       }
    }
  • 相关阅读:
    Spring Aop实例之xml配置
    Spring execution 表达式
    JVM调优总结 -Xms -Xmx -Xmn -Xss
    springmvc整合redis架构搭建实例
    mysql权限操作(转)
    mybatis动态排序
    spring mvc重定向
    jquery中bind和on的区别
    在java项目中使用umeditor
    mybatis的基础Dao
  • 原文地址:https://www.cnblogs.com/aaroncnblogs/p/8609161.html
Copyright © 2011-2022 走看看