千家信息网

“Head First 设计模式“ :工厂模式

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,工厂模式工厂模式是创建型模式模式,解决new对象时的一些列问题,如:依赖,耦合,后期维护等1. 简单工厂模式如:有一个披萨店类,制作披萨流程如下的,,,代码里直接new出了披萨,然后做些操作,如下:我
千家信息网最后更新 2026年11月01日“Head First 设计模式“ :工厂模式

工厂模式

工厂模式是创建型模式模式,解决new对象时的一些列问题,如:依赖,耦合,后期维护等


1. 简单工厂模式

如:有一个披萨店类,制作披萨流程如下的,,,代码里直接new出了披萨,然后做些操作,如下:

我们把new这段代码封装起来,移动到单独的一个类里(SimplePizzaFactory),我们新增的类就是工厂,如下;

最终的代码如下;

总结:

新增的SimplePizzaFactory就是简单工厂模式(一般没有子类,没有再继承关系),我们看看定义,如下:


2. 工厂方法模式

定义:定义一个用于创建对象的接口,让子类决定实例化哪一个类,工厂方法使一个类的实例化延迟到其子类。

问题:披萨店的列子中,如果有两个分店,一个在美国,一个在英语,,那他们需要生产本地化的披萨,这时要引入工厂方法模式了,类图如下:

说明:pizzaStore超类(工厂类),有两个子类,分别两个子类来决定到底实例化那些产品。


3. 抽象工厂模式


定义:抽象工厂模式提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指定具体类。可以理解成是多个工厂方法的组合。

解决问题:在工厂方法模式中,我们的具体创建者每次使用都只能创建一个同类型的对象,假如我们现在需要的是多个不同类型的对象,工厂方法就满足不了需求了。这时我们可以把多个工厂方法组合到一个类,这就是抽象工厂模式,它就是专门用来创建多个产品,也可以说是创建产品家族的。类图如下:

需求:为了保证质量,我们需要把原料统一共同时,就适合抽象工厂来解决。类图如下:


抽象工厂模式的优点

  (1)、允许客户使用抽象的接口创建一组相关产品,而不需要知道(或者关心)产出的具体产品是什么,这样客户就可以从具体的产品中解耦出来。

  (2)、一个具体工厂可以创建多个产品,与工厂方法模式相比,可以少产生具体工厂的类数量。

  (3)、易于交换产品系列,只要更换具体工厂,就可以改变这个产品系列。


抽象工厂模式的和缺点

  (1)、抽象工厂是使用组合的方式把工厂方法集合到一个类中,当新增一个产品家族成员时就要修改抽象工厂类及其下面的具体工厂类,所以它的扩展性比较差。

  (2)、每新增一个产品子类都要创建一个类,当产品子类过多时会产生很多类,导致系统复杂性加大。


抽象工厂模式的使用场合

  1、当需要创建产品家族,或者需要想让创建的产品集合起来时使用。

  2、当系列产品不固定,在以后可能会增加整个系列产品时使用。


设计原则:

1. 对扩展开放,对修改关闭。

2. 依赖抽象,不要依赖具体类。

工厂 模式 产品 方法 多个 子类 对象 披萨 家族 就是 两个 代码 实例 接口 问题 组合 产品系列 客户 类型 需求 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 喔噻互联网科技有限公司 深圳恒合互联网络科技有限公司 互联网核心科技是什么 智能科技公司是互联网公司吗 凡科互联网科技 互联网科技logo设计 兼蜜互联网科技 互联网科技有限公司 翻译 哈尔滨秒房互联网科技有限公司 广州优美互联网科技 中国科技互联网公司收入 互联网大会黑科技排名 崇明区互联网教育科技售后服务 注册互联网科技公司经营范围大全 速维有品互联网信息科技(苏州)有限公司 互联网科技研发水平 滨湖区互联网智能科技产品有哪些 2021互联网科技公司排名 上海创道互联网络科技有限公司 世界互联网科技成果奖 上海挚品互联网科技有限公司 河南云网互联网络科技有限公司 重庆互联网络科技 深圳天众互联网科技公司 左右互联网络科技 恒生科技互联网指数分析 广州慧亚互联网科技怎么样 中国互联网有什么科技含量 消费医药和互联网科技 扫呗互联网科技有限公司
0