一句话设计模式(二):工厂模式

本文以一个幽默的例子引入工厂模式的概念,解释了其如何隐藏对象创建的复杂性,并提供了几种常见工厂模式的概述。

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

博客迁移已迁移到https://www.guyuemeng.com

一句话

对象生产细节的隐藏,适用工厂模式

解析

前段时间有个笑话,话说马云突然饿了,就对属下说:给我买个肯德基,结果,属下就把肯德基收购了!。以此为例,马云的诉求是肯德基,属下收购了肯德基,马云并没有参与收购的流程。再若马云要买个麦当劳,属下收购了麦当劳,马云依然不用关注收购麦当劳的流程。当然这只是个笑话,为了说明工厂模式的本质是隐藏生产过程,简化使用者获取诉求的流程。

对象生产细节

此时坐在这儿,想象到的可隐藏生产细节的场景有两种:

  1. 同类型(同一父类)的对象存在多个,从客体角度,只需要获取某个对象,而无需关注它定义在哪儿,叫什么名字,有没有兄弟姐妹等等细节。
  2. 某对象构建之后,尚有些与此对象无关、外置业务相关的初始化动作,通过工厂可为不同的业务进行定制,也可以规避散弹式修改的场景。

工厂模式实现

常见的模式有以下几种:

  1. 工厂方法:方法传入对象标识,内部使用条件判断,返回对象;有时会嵌入在客体流程中
  2. 简单工厂:类似工厂方法,但独立成工厂类;内部条件判断形式更丰富,可为映射、文件、数据库等
  3. 工厂模式:一种对象,一个工厂,对象和工厂成对存在
  4. 抽象工厂:一种对象的族,一个工厂,一个工厂可以生产多种对象(个人更倾向于用工厂生产工厂的方式)
    工厂的种类、表达形式并不局限于以上,代码存储区、配置文件、数据库、模板等等都能以他们各自的形式来表达。
    核心要素在于,客体获取对象的流程简单、无需关注构建细节;工厂内部利用编译期生成代码、动态信息资源化等,满足“开闭原则”的同时,简化构建工厂的流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值