zoukankan      html  css  js  c++  java
  • 工厂方法模式

    简单工厂模式的升级版--工厂方法模式
    简单工厂模式:属于创建型模式,又叫静态工厂方法模式,但不属于23种GOF设计模式之一。简单工厂模式是由一个工厂对象决定创建出哪一种产品类的实例。
    简单工厂类:
    //简单面包工厂类
    public class BreadFactory{
     public static BreadMaker MakeBread(int breadType){
               BreadMaker breakMaker=null;
              //选择面包类型
             switch( breadType){
                  case 1:
                         breadMaker =new BlackBread();
                         break; 
                  case 2:
                         breadMaker =new HoneyBread();
                         break; 
                  default:
                    break;
            }
           return breakMaker;
      }
    }
     因为简单工厂模式违反了开放-封闭原则,所以对简单工厂模式进行升级成为了工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方法使一个类的实例化延迟到其子类。
    //工厂接口
    public interface IFactory{
       BreadMaker CreateBread();
    }
    不同的面包建立一个具体工厂方法来实现这个接口:
    //黑面包的工厂方法实现
    public class BlackBreadFactory implements IFactory{
         //覆盖父类抽象方法
        @Override
        public BreadMaker CreateBread(){
              return new BlackBread();
        }
    }
    //以下几个工厂省略
          可以说工厂方法模式是简单工厂模式的进一步抽象和推广,也可以说简单工厂模式是工厂方法模式的简化。对于多态性的进一步使用,工厂方法模式在保留简单工厂模式优点的同时,也克  服了它的缺点。工厂方法模式也有其缺点,每增加一个产品,就要相应地添加一个产品工厂类,增加了额外的开发量。
    
        对于是选择工厂方法模式和简单工厂模式,要取决于具体的应用。正如从两个模式的名称就可以看出,对于一些比较简单的应用,“产品”比较少时,使用简单工厂模式就可以满足要求。而对 于“产品”比较丰富的应用,过多的分支不利于程序的维护,这时应该选择工厂方法模式来降低程序的维护量。
  • 相关阅读:
    如果你很忙,你一定在什么地方做错了!
    NOSQL介绍
    mysql 8.0.11 安装(windows)
    ORA-28547:(Navicat Premium连接oracle报错)
    线性筛法
    Luogu-P1020(导弹拦截)(DP,LIS ,二分优化)
    POJ
    HDU
    HDU-1024-Max Sum Plus Plus(DP)
    UVA-1625-Color Length(DP LCS变形)
  • 原文地址:https://www.cnblogs.com/fxbbk/p/6605896.html
Copyright © 2011-2022 走看看