2019-06-27抽象工厂设计模式

何时使用:系统有多于一个的产品族,但是系统只消费其中的一组产品族

如何解决:在一个产品族里面设计多个产品

比如有颜色和形状两种特性的产品,其中颜色包含赤橙黄绿青蓝紫,形状有圆形、椭圆形等等,可以分别建立两个接口,分别是形状的接口和颜色的接口。建立的方法有draw和fill方法,分别代表画一个形状或者填充一个颜色。

之后可以通过具体的形状矩形、正方形、圆形来实现形状的接口;红色绿色蓝色这些具体的颜色实现颜色的接口。再建立一个 抽象类为AbstractFactory,内部包含两个抽象方法,一个是getColor();一个是getShape(),返回值类型分别是形状与颜色。之后再定义形状的工厂和颜色的工厂。之后就是测试类


特性的工厂


形状的工厂

整个流程的调用类图为:


抽象工厂的类图

对比工厂方法设计模式

工厂方法:类图展示如下


工厂方法类图

dell和惠普都实现了鼠标这个制造商的接口,并且有两个工厂,戴尔的鼠标制造工厂和惠普的鼠标制造工厂。都继承鼠标工厂的抽象类

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容