一个好老好老的老程序员了。
全部博文(915)
分类: C#/.net
2020-04-18 18:36:22
点击(此处)折叠或打开
点击(此处)折叠或打开
点击(此处)折叠或打开
点击(此处)折叠或打开
接下来继续使用生产手机的例子来讲解该模式。
其中和产品相关的IPhone接口、HuaWeiPhone类和ApplePhone类的定义不变。
定义IFactory类:生产不同产品的工厂的接口:点击(此处)折叠或打开
点击(此处)折叠或打开
点击(此处)折叠或打开
点击(此处)折叠或打开
最简单的方式是把2中介绍的工厂方法模式完全复制一份,不过这次生产的是PC。但同时也就意味着我们要完全复制和修改Phone生产管理的所有代码,显然这是一个笨办法,并不利于扩展和维护。
抽象工厂模式通过在AbstarctFactory中增加创建产品的接口,并在具体子工厂中实现新加产品的创建,当然前提是子工厂支持生产该产品。否则继承的这个工厂可以什么也不干。
其UML类图如下:
从上面类图结构中可以清楚的看到如何在工厂方法模式中通过增加新产品接口来实现产品的增加的。
接下来我们继续通过华为和苹果产品生产的例子来解释该模式。
PC接口:定义PC产品的接口(IPCComputer):点击(此处)折叠或打开
点击(此处)折叠或打开
点击(此处)折叠或打开
点击(此处)折叠或打开
点击(此处)折叠或打开
点击(此处)折叠或打开
点击(此处)折叠或打开
上面介绍的三种工厂模式有各自的应用场景,实际应用时能解决问题满足需求即可,可灵活变通,无所谓高级与低级。
其中简单工厂方法实现同种产品的各种实现,根据名称来确定生产哪类产品。
工厂方法将同种产品的各种实现都由各自的工厂来实现。在使用的时候由各种工厂来产生各自的产品。
而抽象工厂主要实现多类产品的生产。即每个工厂可生产不同的产品。