8、抽象工厂与建造者模式:对象创建的高效策略

抽象工厂与建造者模式:对象创建的高效策略

1. 抽象工厂与工厂方法模式对比

抽象工厂模式和工厂方法模式在很多方面非常相似,这让很多人在选择使用哪种模式时感到困惑。两者都可用于创建对象,且不让客户端知晓具体返回的是哪些具体对象。以下是它们的对比:
| 对比项 | 抽象工厂模式 | 工厂方法模式 |
| — | — | — |
| 创建方式 | 通过对象组合创建抽象产品 | 通过类继承创建抽象产品 |
| 产品类型 | 创建产品族 | 创建一种类型的产品 |
| 新产品支持 | 需要更改父接口以支持新产品 | 子类化创建者并覆盖工厂方法来创建新产品 |

2. 抽象工厂在TouchPainter应用中的应用

设想这样一个场景:合作伙伴公司希望拥有带有他们品牌名称和标志的TouchPainter应用。我们要为Sierra Corporation和Acme Corporation这两家公司对应用进行白标和品牌化。由于最初设计应用时未考虑品牌因素,现在最佳的品牌化位置是具有特定品牌设计的主视图,其他UI元素(如主按钮和主画布上的工具栏)也可能参与品牌化过程。

根据软件设计的黄金法则:变化需要抽象。因为产品和品牌存在多种变化,所以需要进行抽象。我们需要两个品牌工厂,每个工厂通过工厂方法生产三种不同的UI元素,即定制的UIView、UIButton和UIToolbar。

以下是相关代码实现:
- BrandingFactory.h

@interface BrandingFacto
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值