zoukankan      html  css  js  c++  java
  • 设计模式原理及应用·简单工厂模式

    这个模式比较简单,平常也基本不用,见得最多的也就是读spring框架源码时候。
    写这个总是提不起精神,写得不好,去看这个吧:
     
    模式名和分类
    • 模式名:xxxFactory
    • 分类:创建型模式
     
    意图
        将对象与它的创建,交给别人去做
     
    别名
      无
     
    动机
        将对象的创建与业务剥离,根据需要创建合适的对象,增加可扩展性!
     
    适用性
    • 运用在框架中
    • 封闭的模块,想自己掌握对象的生成
    • 权限统合,将一类对象的创建权力收归工厂,参考Spring
    • 统一对象的创建方法,如果你在很多地方写了new,万一有一天需要加个new的参数呢?一个一个的去改?所以将创建对象给封装起来
     
    结构

    参与者
    • 有一个公共的父类或者接口,用来抽象类型。--Shape
    • 具体的、明确的对象,在父类的抽象之下。--Circle、Square、Rectangle
    • 工厂类,用于创建该一类实例(被抽象出来的一类)。--ShapeFactory
     
    协作
    • ShapeFactory用于创建Shape这类实例,使用者调用ShapeFactory即可
      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 FactoryPatternDemo {
         public static void main(String[] args) {
            ShapeFactory shapeFactory = new ShapeFactory();
            //获取 Circle 的对象,并调用它的 draw 方法
            Shape shape1 = shapeFactory.getShape("CIRCLE");
            //调用 Circle 的 draw 方法
            shape1.draw();
            //获取 Rectangle 的对象,并调用它的 draw 方法
            Shape shape2 = shapeFactory.getShape("RECTANGLE");
            //调用 Rectangle 的 draw 方法
            shape2.draw();
            //获取 Square 的对象,并调用它的 draw 方法
            Shape shape3 = shapeFactory.getShape("SQUARE");
            //调用 Square 的 draw 方法
            shape3.draw();
         }
      }
    实现
        Spring的IOC实现,BeanFactory十分重要。
     
    代码实例
        上已述
     
    已知应用
        SpringIOC实现
     
    相关模式
        创建型模式:建造者模式、抽象工厂模式、工厂方法模式、原型模式、工厂模式
        工厂模式相关:抽象工厂模式、工厂方法模式

      

      

  • 相关阅读:
    MPI编程简述
    网购时代,写在消费者权益保护的新篇章大企业
    在哪里?
    H264 编解码器架构简单
    Unity+NGUI打造网络图片异步加载和本地缓存工具(一)
    分数减法
    JAVA设计模式(09):结构化-代理模式(Proxy)
    I2C驱动程序框架probe道路
    安卓表格布局android:collapseColumns,android:shrinkColumns和stretchColumn
    智课雅思词汇---七、cur是什么意思
  • 原文地址:https://www.cnblogs.com/dhcao/p/11151858.html
Copyright © 2011-2022 走看看