博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
理解工厂模式
阅读量:7199 次
发布时间:2019-06-29

本文共 1082 字,大约阅读时间需要 3 分钟。

一、简单工厂模式,因为创建对象的方法是static的,所以也叫静态工厂模式。

  由来:静态工厂模式是为了对产品类有统一的创建方法,而对于客户端如何创建"产品"是不需要知道也不需要管的。

  通过客户端提供的信息,new出不同的“产品”

  关键代码:

class Factory(){

  public static Farther(){

    if("sub1"){

      return new Sub1();

    }else if("sub2"){

      return new Sub2();

    }

  }

}

class Farther(){}

class Sub1 extends Farther(){}

class Sub2 extends Farther(){}

 

二、工厂模式,因为简单工厂模式不符合开闭原则,所以需要工厂模式来解决这个问题。

  关键点:需要一个工厂接口和一个产品基类,在新添加的产品的情况下新建工厂和产品即可,符合开闭原则。

   每一个产品的生产都需要一个工厂。优点是符合开闭原则(对修改关闭,对扩展开放)。缺点是造成类过多(每一个产品都需要一个产品子类和一个工厂类)

  interface Factory(){

    public Product factoryMethod();

  }

  class FactoryType1 implements Factory(){

    public Product factoryMethod(){

      return new ProductSub1();

    }

  }

class Product(){}

class ProductSub1 extends Farther(){}

 

 

三、抽象工厂模式,对产品过多的工厂模式,类的数量将极大的增加,抽象工厂模式可以将产品分族实现创建对象。

  对添加产品族是符合开闭原则的,对改变产品结构是不合符开闭原则的。

  abstract interface AbstractFactory(){ //每建一个子工厂都必须赋予这个工厂A,B两种产品的生产。每个工厂都可以有自己的实现(即不同的牌子的产品)

  public abstract productA productAFactory();

  public abstract productB productAFactory();

}

 

转载于:https://www.cnblogs.com/yemanling/p/4465324.html

你可能感兴趣的文章
phalcon7 阅读理解
查看>>
消息中间件 RocketMQ源码解析:Message顺序发送与消费
查看>>
Thread interrupt
查看>>
博客搬家至简书
查看>>
Linux上的free命令详解
查看>>
linux主目录下各个子目录的作用
查看>>
[问题]javax.servlet不存在的问题
查看>>
Hive学习总结之五:HBase和Hive的集成
查看>>
Windows7系统中启动Windows Event Log服务提示拒绝访问,错误5的解决方法
查看>>
mybatis--缓存(一级和二级缓存)
查看>>
centos 配置 nginx + fcgiwrap + git
查看>>
Eclipse下Maven打包非法字符问题
查看>>
FreeMarker标签
查看>>
AngularJS 中的 Promise 和 设计模式
查看>>
《从面试题来看源码》,单参数,多参数,如何正确使用@Param
查看>>
《JavaScript设计模式》学习日志
查看>>
MySql 建表、添加字段、修改字段、添加索引SQL语句写法
查看>>
Core Bluetooth框架之三:最佳实践
查看>>
Gson序列化时@SerializedName的使用
查看>>
windows上pip install 报编码错误
查看>>