设计模式——简单工厂模式、工厂方法模式、抽象工厂模式

本文介绍了设计模式中的简单工厂模式、工厂方法模式和抽象工厂模式。简单工厂模式通过一个工厂类创建不同类型的运算子类对象,但扩展时需要修改工厂类。工厂方法模式将创建对象的职责分离,简化了调用者逻辑。抽象工厂模式适用于当多个产品族需要一起使用时,如数据库切换场景中的不同数据库实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

设计模式——简单工厂模式、工厂方法模式、抽象工厂模式


这三种模式都属于创建型模式,封装的是对象创建的过程。

简单工厂模式

对运算进行抽象(运算类),根据数据计算出结果。结果的运算方式不同,派生出运算子类(加减乘除)。创建哪个运算子类,怎么创建运算子类。我们把这些都放到一个新的类中去实现,对外反回一个运算类对象,这个类就是一个简单工厂类。
简单工厂模式类图
优点:
简单直接
缺点:
扩展时,如添加取余数计算,需要添加取余数类,修改简单工厂类;即要增加运算类,同时还要修改工厂类,违背扩展开放,修改封闭原则;

工厂方法模式

在简单工厂类中,有两个职责:创建哪个运算子类,怎么创建运算子类。
如果一个工厂类只创建一个类型的对象,所有工厂对外提供统一接口,就变成了下图这样。
简单工厂类中,判断逻辑被移到调用工程类的逻辑中;

在这里插入图片描述
简化后的结构图
在这里插入图片描述

抽象工厂模式

工厂方法模式中,有两个抽象的产品类ProductA(票)、ProductB(交通工具)时,ProductA有两个具体的实现ProductA1(机票),、ProductA2(火车票),ProductB也有两个具体实现ProductB1(飞机)、ProductB2(火车),其结构图如下;
在这里插入图片描述
如果,Client需要的是一个ProductA对象与一个ProductB对象(买票乘交通工具),且 ProductA1只能和ProductB1协作(买机票乘坐飞机),ProductA2只能和ProductB2协作(买火车票乘坐火车)。我们就可以合并工厂类了,合并后就是抽象工厂模式。
AbstractFactory
抽象工厂模式最点型用法应该是数据库切换,ProductA,ProductB分别是表实例的抽象类,1、2是不同数据库的具体实现。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值