创建者模式之工厂模式

创建者模式之工厂模式

工厂模式目的在于:原本对具体对象的耦合转变为对工厂的耦合;使用工厂来获取具体对象。

简单工厂模式

简单工厂中的角色:

  • 抽象产品:定义产品规范,描述产品的主要特性和功能
  • 具体产品:实现或继承抽象产品的子类
  • 具体工厂:提供创建产品的方法,调用者通过该方法获取产品对象

简单工厂就是将具体对象的创建封装在工厂中,根据参数返回创建的对象。
优点: 创建具体产品对象过程,与业务逻辑分开。
缺点: 增加新产品还需要更改工厂代码。

静态工厂

与简单工厂相比,就是将工厂中的创建方法转变为静态的,可直接通过类名进行调用,无需再创建工厂的对象。

工厂方法模式

定义一个用于创建对象的接口,让子类决定实例化哪个产品对象;工厂方法将一个产品类的实例化延迟到其工厂的子类中实现。
工厂方法中的角色:

  • 抽象工厂:提供了创建产品的接口,调用者通过它访问具体工厂来创建产品
  • 具体工厂:提供创建产品的方法,调用者通过该方法获取产品对象
  • 抽象产品:定义产品规范,描述产品的主要特性和功能
  • 具体产品:实现或继承抽象产品的子类

如要创建一杯咖啡的流程:

咖啡店 → 咖啡工厂接口 → 具体咖啡工厂 → 生产咖啡

由对工厂的耦合,转变对接口的耦合,在有多态进行创建想要的对象。
优点:与简单工厂/静态工厂相比,增加新产品无需更改工厂代码,满足开闭原则。

抽象工厂模式

  • 与工厂方法对比,抽象工厂模式可生产多个等级的产品。
  • 抽象工厂中规定了创建产品的抽象方法。
  • 生产的是同一产品族的产品对象

抽象工厂中的角色:

  • 抽象工厂:提供了创建产品的接口,它包含多个创建产品的方法,可以创建多个不同等级的产品。
  • 具体工厂:实现抽象工厂中的抽象方法完成具体产品的创建。
  • 抽象产品:定义产品规范,描述产品的主要特性和功能。
  • 具体产品:实现或继承抽象产品的子类。

如果要加一个产品族的话,只需要再加一个对应的工厂类即可,不需要修改其他类;而如果要在产品族中添加一个产品的话,就需要更改所有的类。

扩展

采用简单工厂+配置文件的方式进行创建实体。

扫描二维码关注公众号,回复: 13376179 查看本文章

猜你喜欢

转载自blog.csdn.net/qq_44157349/article/details/119512395