知识卡片
产品族与产品等级的区分
内容
[[抽象工厂模式的定义是工厂方法的升级版]]有两个概念:产品族(同一工厂一次能生产的一组 相关对象,如FemaleFactory的黑白黄三种女性);产品等级(按维度细分的规格,每个等级对应 一个工厂类)。有N个产品族就要有N个创建方法,有M个产品等级就要有M个工厂类,两维正交才 唯一确定产品。发散:沿产品等级扩展代价低,沿产品族扩展代价高,这个不对称性决定适用场景。
参考来源
- 位置:《设计模式之禅(第2版)》第9章《抽象工厂模式》(源文件:_epub-src/text/part0039.html)
- 结论依据:原文用两个产品族(AbstractProductA/B)与两个产品等级(Creator1/Creator2)的通用代码示例,明确"有N个产品族,在抽象工厂类中就应该有N个创建方法""有M个产品等级就应该有M个实现工厂类"的对应关系。
- 原始内容:首先有两个互相影响的产品线(也叫做产品族),例如制造汽车的左侧门和右侧门……有N个产品族,在抽象工厂类中就应该有N个创建方法……有M个产品等级就应该有M个实现工厂类,在每个实现工厂中,实现不同产品族的生产任务。