自《工厂模式三部曲之一_简单工厂模式》之后,貌似已经很久没有继续这个三部曲了,所以抽点时间把后两篇给补上吧。首先回顾下简单工厂模式的主要内容:简单工厂模式就是实质就是专门定义了一个工厂类,利用工厂类的静态方法来根据用户需求创建对象,优点是客户端的压力较小,客户端不需要做创建实例的操作,只需要调用工厂类中的方法就可以获得对应实例,而其缺点也非常明显,其所有创建工作都在一个工厂类完成,耦合性较高,而且当系统需要增加或者修改产品时需要改动工厂类,既不符合单一职责的原则也不符合开放-关闭原则,所以就出现了工厂模式。

 

工厂模式

工厂模式是对简单工厂模式的进一步抽象化,是简答工厂模式的衍生,根据设计模式的基本原则也是设计模式的精髓“封装变化点”,即哪里发生改变就把哪里封装起来,所以工厂模式对简单工厂中的工厂类做了一个封装,使其满足单一职责和开放-关闭原则。

【解决问题】:简单工厂模式中违背了单一职责和开放-关闭原则。

【核心思想】:建立一个抽象工厂的基类,给每个产品建立一个工厂,该工厂继承之抽象工厂,规定每个产品都有特定的工厂来创建。

【角色】

抽象工厂角色:这是工厂模式的核心,它与应用程序无关,是具体工厂必须继承的父类或者必须实现的接口

具体工厂角色:包含逻辑业务的代码,由应用程序调用以创建对应的具体产品对象

抽象产品角色:具体产品必须继承的父类或者必须实现的接口

具体产品角色:所创建的对象就是此角色的实例

 

下面仍旧以简单工厂中的实例来讲解,对其进行改造

【角色分析】

抽象工厂:衣服制造厂 包含衣服的一些公共特性
具体工厂:**类型衣服制造厂 每个衣服制造厂只负责一件衣服(高内聚) ,当然也就是说当没有客户需要的衣服的时候需要创建一个对应的工厂及一件衣服 由该工厂负责提供这件衣服 但是对于以前的工厂和衣服都没有影响(这是设计模式所期望的--单一职责原则)
抽象产品:衣服 包含衣服的一些公共特性
具体产品:**类型衣服 继承抽象产品,当然可扩展自身特性

角色分析好了,就可以进行改造了,贴上改造完毕的各个部分代码:

抽象工厂类:

1     //抽象工厂:声明工厂方法 返回一个产品
2     public abstract class ClothFactory
3     {
4        public abstract Cloth CreateCloth();
5     }

相关文章:

  • 2021-05-31
  • 2022-12-23
  • 2021-06-10
  • 2021-10-07
  • 2022-12-23
  • 2021-11-17
  • 2021-10-09
猜你喜欢
  • 2022-01-02
  • 2021-05-30
  • 2021-09-15
  • 2022-12-23
  • 2022-12-23
  • 2021-07-29
相关资源
相似解决方案