23中设计模式之抽象工厂模式
抽象工厂模式的定义定义: 为创建一组相关或互相依赖的对象提供一个接口,而且无须制定它们的具体类 抽象工厂模式的实现两个产品族,其类图如下: ![]() 抽象产品类代码如下: ![]() 产品A的1级和2级类代码如下: ![]() 产品B与产品A类似 抽象工厂类 AbstractCreator 的职责是定义 每个工厂要实现的功能,其代码如下: ![]() 如何创建产品,则是由具体的实现类来完成的,Creator1 和 Creator2代码如下: ![]() 这样在使用时,我们只要知道它的工厂方法就可以直接产生一个产品对象,无需关心它的实现类 抽象工厂模式的优缺点优点如下;
缺点如下:
注意: 我们说抽象工厂模式的产品族扩展比较困难,但是产品等级扩展是非常容易的,增加一个产品等级,只要增加一个工厂类负责新增加出来的产品生产任务即可. 抽象工厂模式的使用场景一个对象族(或是一组没有任何关系的对象)都有相同的约束,则可以使用抽象工厂模式. 例如一个文本编辑器和一个图片处理器,都是软件实体,但是Unix下的文本编辑器和Windows下的文本编辑器虽然功能和界面都相同,但是代码实现是不同的,图片处理器也有类似情况. 也就是具有了共同的约束条件: 操作系统. 于是我们可以使用抽象工厂模式,产生不同操作系统下的编辑器和图片处理器 抽象工厂模式是一个简单的模式,使用的场景非常多,在软件产品生产过程中,涉及不同操作系统的时候,都可以考虑使用抽象工厂模式,例如一个应用,需要在三个不同平台(Windows,Linux,Android)上运行,就可以通过抽象工厂模式屏蔽掉操作系统对应用的影响. 三个不同操作系统上的软件功能、应用逻辑、UI都应该是非常类似的,唯一不同的是调用不同的工厂方法,由不同的产品类去处理与操作系统交互的信息 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |