大白话工厂模式及使用场景

简介: 设计模式共23种,按功能可以分为创建型、结构型、行为型,工厂模式属于创建型模式,主要用于创建对象

设计模式共23种,按功能可以分为创建型、结构型、行为型,工厂模式属于创建型模式,主要用于创建对象


比方说造一辆车:


不使用工厂模式


我需要造宝马的时候,就写一个造宝马的方法,需要造奔驰的时候就写一个造奔驰的方法,缺陷很明显,后期不易维护、代码冗余、不符合面向对象的思想;


使用工厂模式


我只需要写一个造汽车的方法,在内部做一些判断,如果参数是宝马我就造宝马,如果是奔驰我就造奔驰,这样后期如果造汽车,只需要调用它的方法传入参数就行;


工厂模式能细分为简单工厂,工厂方法和抽象工厂三种


常见的有简单工厂和工厂方法两种


简单工厂中包含工厂、产品和具体产品三个角色。其中工厂是整个模式的核心,这个类当中包含有必要的判断逻辑,可以决定在什么时候创建哪一个产品类的对象。而客户端则可以免除直接创建产品对象的责任。从这个角度上说简单工厂实现了对责任的分割。另外,由于客户端所使用的对象都由工厂生成,并统一转型为产品类型,所以客户端无需关心自己得到的是哪一个具体产品,这样在添加新的具体产品时,就不需要修改客户端的代码,从某种程度上也实现了开放-封闭法则。但是每当需要添加新的具体产品时,就需要修改工厂类。


工厂方法使用了面向对象的多态性,保留了简单工厂的优点,而且克服了它的缺点。

首先,在工厂模式当中,核心的工厂类不再负责所有产品的创建,而是将具体的产品创建交给子类去做。这个核心类成了抽象工厂角色,仅仅负责给出具体工厂子类必须实现的接口。这种进一步抽象的结果是,可以允许系统在不修改具体工厂角色的情况下引进新的产品。


在现实的开发当中,典型的例子就是在servcie层中需要得到DAO对象,通常就会抽象出DAO接口作为产品,接口的实现类作为具体产品,然后提供工厂供service使用。这样就可以分离service和dao的耦合,当DAO添加新的实现类是,service不需要修改。提升系统的扩展性和维护性。


相关文章
|
存储 消息中间件 架构师
如何估算集群所需的存储、计算资源?
如何估算集群所需的存储、计算资源?
|
6月前
|
存储 虚拟化 数据中心
VMware ESXi 8.0U3e macOS Unlocker & OEM BIOS Lenovo (联想) 定制版
VMware ESXi 8.0U3e macOS Unlocker & OEM BIOS Lenovo (联想) 定制版
161 2
|
SQL 数据库
解决Can not issue executeUpdate() or executeUpdate() with statement that produce result sets问题~
解决Can not issue executeUpdate() or executeUpdate() with statement that produce result sets问题~
561 0
|
存储 Linux Shell
【应用服务 App Service】App Service For Linux 中如何挂载一个共享文件夹呢? Mount Azure Storage Account File Share
【应用服务 App Service】App Service For Linux 中如何挂载一个共享文件夹呢? Mount Azure Storage Account File Share
163 0
|
Python
python小游戏——乒乓球大战2.0版本の双人联机对战功能的实现
python小游戏——乒乓球大战2.0版本の双人联机对战功能的实现
561 0
|
运维 Prometheus Kubernetes
服务网格下的东西向与南北向流量管理实践|学习笔记(一)
快速学习服务网格下的东西向与南北向流量管理实践
服务网格下的东西向与南北向流量管理实践|学习笔记(一)
|
Web App开发 JSON 移动开发
iOS Principle:ReactNative(下)
iOS Principle:ReactNative(下)
296 0
iOS Principle:ReactNative(下)
|
安全 Linux 网络架构
kali_NAT模式、桥接上网/仅主机_详细
kali_NAT模式、桥接上网/仅主机_详细
kali_NAT模式、桥接上网/仅主机_详细
|
人工智能 达摩院 自然语言处理
“喊一嗓子”就能买票!北京机场地铁全线开通语音购票
从首都机场到北京市区,你是否遇到过不知道该怎么坐地铁买票换乘的问题? 如今,语音AI来了,“喊一嗓子”就能快速购票进站!
472 0
“喊一嗓子”就能买票!北京机场地铁全线开通语音购票
hutool实现监听文件变化
hutool实现监听文件变化