抽象工厂与建造者模式:对象创建的高效策略
1. 抽象工厂与工厂方法模式对比
抽象工厂模式和工厂方法模式在很多方面非常相似,这让很多人在选择使用哪种模式时感到困惑。两者都可用于创建对象,且不让客户端知晓具体返回的是哪些具体对象。以下是它们的对比:
| 对比项 | 抽象工厂模式 | 工厂方法模式 |
| — | — | — |
| 创建方式 | 通过对象组合创建抽象产品 | 通过类继承创建抽象产品 |
| 产品类型 | 创建产品族 | 创建一种类型的产品 |
| 新产品支持 | 需要更改父接口以支持新产品 | 子类化创建者并覆盖工厂方法来创建新产品 |
2. 抽象工厂在TouchPainter应用中的应用
设想这样一个场景:合作伙伴公司希望拥有带有他们品牌名称和标志的TouchPainter应用。我们要为Sierra Corporation和Acme Corporation这两家公司对应用进行白标和品牌化。由于最初设计应用时未考虑品牌因素,现在最佳的品牌化位置是具有特定品牌设计的主视图,其他UI元素(如主按钮和主画布上的工具栏)也可能参与品牌化过程。
根据软件设计的黄金法则:变化需要抽象。因为产品和品牌存在多种变化,所以需要进行抽象。我们需要两个品牌工厂,每个工厂通过工厂方法生产三种不同的UI元素,即定制的UIView、UIButton和UIToolbar。
以下是相关代码实现:
- BrandingFactory.h
@interface BrandingFacto
超级会员免费看
订阅专栏 解锁全文
643

被折叠的 条评论
为什么被折叠?



