有时候,我们要求工厂创建一组具有某些属性的产品,比如来一桌法式大餐。具体的菜式属于产品,而法式属于产品的属性。将这两个概念抽象一下,就有了产品族和产品等级结构的概念:
同一列的所有产品继承同一个父类,同一行的产品构成一个产品族。
模式图
从图中看出,抽象工厂可以同时依赖于两个产品类,这两个产品类构成一个产品族。
抽象工厂的起源
据说最早的应用是用来创建在不同操作系统下都能运行的软件。比如创建在Windows和Linux下都能正确运行的Button和Text控件。
代码
有时候,我们要求工厂创建一组具有某些属性的产品,比如来一桌法式大餐。具体的菜式属于产品,而法式属于产品的属性。将这两个概念抽象一下,就有了产品族和产品等级结构的概念:
同一列的所有产品继承同一个父类,同一行的产品构成一个产品族。
模式图
从图中看出,抽象工厂可以同时依赖于两个产品类,这两个产品类构成一个产品族。
抽象工厂的起源
据说最早的应用是用来创建在不同操作系统下都能运行的软件。比如创建在Windows和Linux下都能正确运行的Button和Text控件。
代码