奔驰跑车

PHP设计模式:抽象工厂

时光毁灭记忆、已成空白 提交于 2020-02-07 18:06:53
示例代码详见 https://github.com/52fhy/design_patterns 抽象工厂 抽象工厂(Abstract Factory)是应对产品族概念的。比如说,每个汽车公司可能要同时生产轿车、跑车、货车、客车,那么每一个工厂都要有创建轿车,货车和客车的方法。 在学习抽象工厂具体实例之前,应该明白两个重要的概念: 产品族 和 产品等级 。 产品等级:同一个产品的不同分类或者组成。 产品族:是指位于不同产品等级结构中,功能相关联的产品组成的家族。 例如:汽车分奔驰、宝马,奔驰下面还有跑车、MINI车等等。其中奔驰就是产品族,跑车、MINI车是产品等级。 再例如:AMD的主板、芯片组、CPU组成一个家族,Intel的主板、芯片组、CPU组成一个家族。而这两个家族都来自于三个产品等级:主板、芯片组、CPU。 抽象工厂是汽车生产工厂的抽象,工厂方法是一个汽车工厂里每种汽车型号的抽象;简单工厂和抽象工厂含义一样,只是产品型号是固定的。 应对产品族概念而生,增加新的产品线很容易,但是无法增加新的产品。 抽象工厂UML图: 简单工厂需要有4个角色: Product接口类:用于定义产品规范,例如ProductA、ProductB,抽象工厂有多个Product接口类; 具体的产品实现,例如ProductA1、ProductA2; 抽象工厂类IFactory:用于规范每个工厂;