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();
        }
    }
    //以下几个工厂省略
          可以说工厂方法模式是简单工厂模式的进一步抽象和推广,也可以说简单工厂模式是工厂方法模式的简化。对于多态性的进一步使用,工厂方法模式在保留简单工厂模式优点的同时,也克  服了它的缺点。工厂方法模式也有其缺点,每增加一个产品,就要相应地添加一个产品工厂类,增加了额外的开发量。
    
        对于是选择工厂方法模式和简单工厂模式,要取决于具体的应用。正如从两个模式的名称就可以看出,对于一些比较简单的应用,“产品”比较少时,使用简单工厂模式就可以满足要求。而对 于“产品”比较丰富的应用,过多的分支不利于程序的维护,这时应该选择工厂方法模式来降低程序的维护量。
  • 相关阅读:
    MongoDB配置及解答mongodb cmd中安装及连接数据库 mongodb无法安装及连接数据库解答
    类封装版学生管理系统,连接数据库,增删改查,拿去用,不谢。
    python学生管理系统连接数据库版,很详细,这个是用函数版的增删改查,拿去用,不谢。
    京东双十一
    Ubuntu中以root权限运行软件sudo命令不输入密码
    Ubuntu 18.04中sudo运行的程序无法切换输入法中文输入问题
    UVA12558 埃及分数
    NOI1999 生日蛋糕
    Tarjan
    AC自动机
  • 原文地址:https://www.cnblogs.com/fxbbk/p/6605896.html
Copyright © 2011-2022 走看看