设计模式

发布于:2022-10-18 ⋅ 阅读:(795) ⋅ 点赞:(0)

工厂设计模式

工厂设计模式分为简单工厂、工厂方法、抽象工厂,它们都属于设计模式中的创建型模式。

主要功能是帮助我们把对象的实例化部分抽取出来,降低系统中代码的耦合度,增强系统的扩展性。

对象的创建过程比较复杂,使用工厂模式进行封装,同时可以屏蔽掉对象复杂的创建过程。

简单工厂设计模式

简单工厂模式包含如下一些角色:

  • Factory:工厂角色。负责实现创建所有实例的内部逻辑。

  • Product:抽象产品角色。所创建的所有对象的父类。

  • ConcreteProduct:具体产品角色。是我们要创建的目标,具体的实例。

工厂方法模式

Java开发中要遵循开闭原则,如果有一天我想增加一个新的型号,就必须修改PhoneFactory

就不太灵活,解决方案就是使用工厂方法模式。

工厂方法模式包含一些角色:

  • Factory:抽象工厂角色。

  • ConcreteFactory:具体工厂。

  • Product:抽象产品角色。所创建的所有对象的父类。

  • ConcreteProduct:具体产品角色。是我们要创建的目标,具体的实例。

好处

又定义了一个抽象和核心工厂类,定义创建产品对象的接口,创建具体的产品实例的工作延迟到各个工厂的实现中去完成。扩展性变得更好,符合面向对象的开闭原则。

坏处

工厂方法模式虽然扩展性好,但是增加了编码难度,大大增加了类的数量。

抽象工厂设计模式

抽象工厂模式包含一些角色:

  • Factory:抽象工厂角色。

  • ConcreteFactory:具体工厂。

  • Product:抽象产品角色。所创建的所有对象的父类。

  • ConcreteProduct:具体产品角色。是我们要创建的目标,具体的实例。

抽象工厂是工厂方法模式的升级版本,在有多个业务品种、业务、分类,通过抽象工厂模式产生需要的对象是一种非常好的解决方案。

这一次,我们的设计相对来说比较复杂,增加了产品的品牌的概念。

如果我们想在某一个产品线下新增一个产品,和之前的工厂方法设计模式一样,只需要增加相应的产品和工厂即可。我们现在的设计会导致产品无法独立于产品品牌,如果我们想增加一条产品线,不需要对其他品牌的代码进行修改。

创建者设计模式

分离对象子组件的单独构造和装配。从而我们可以构建出复杂的对象。这个模式适用于对象的构建过程复杂。

创建者模式的角色:

  • Builder:抽象创建者

  • ConcreteBuilder:具体的创建者

  • Director:指挥者

  • Product:产品角色

这种构造的方式和普通的方法有什么区别?

  1. 当我们要构造对象相对来说比较复杂,成员变量比较多,使用构造器不容易进行灵活配置。

  2. 构造的过程可以灵活的编排,可以随时舍掉或新增过程,有些时候可能出现对顺序性的要求,构建顺序不同,结果不同。

  3. 单个的构建过程也比较复杂,比如:主板的构建,本身就是个复杂的过程,cpu的选型也是及其复杂的过程,使用setter方法不容易表达复杂性。

创建者模式是一个对对象的构建过程精细化的一个过程,可以让更加合法的数据构建到对象中。

当我们在构建复杂的对象的时候,如果发现每个部分可能都是变化的,每个部分都很复杂,我们可以考虑使用创建者模式。

本文含有隐藏内容,请 开通VIP 后查看