********创建Linux Java ************************************/
JavaCodeStyle * pLinuxJavaCodeStyle = pLinuxCodeStyleFactory->CreateJava();
pLinuxJavaCodeStyle->DisplayCodeStyle();
/*************销毁Windows相关对象操作****************************/
delete pWindowsCodeStyleFactory;
pWindowsCodeStyleFactory = NULL;
delete pWindowsCppCodeStyle;
pWindowsCppCodeStyle = NULL;
delete pWindowsJavaCodeStyle;
pWindowsJavaCodeStyle = NULL;
/*************销毁Linux相关对象操作****************************/
delete pLinuxCodeStyleFactory;
pLinuxCodeStyleFactory = NULL;
delete pLinuxCppCodeStyle;
pLinuxCppCodeStyle = NULL;
delete pLinuxJavaCodeStyle;
pLinuxJavaCodeStyle = NULL;
return 0;
}
编译并执行,程序结果如下:
5、抽象工厂模式总结
简单工厂模式和工厂方法模式都只产生一种类型的产品对象。然而在抽象工厂模式中,每一个具体工厂都提供了多个工厂方法用于产生多种不同类型的产品,这些产品可以没有任何的联系,位于不同的产品等级,但这些产品可以组合起来,构成一个产品族。抽象工厂模式是工厂方法模式的进一步延伸,由于它提供了功能更为强大的工厂类并且具备较好的可扩展性,在软件开发中得以广泛应用。使用抽象工厂模式来实现在不同的操作系统中应用程序呈现与所在操作系统一致的外观界面。
1.主要优点
抽象工厂模式的主要优点如下:
(1) 抽象工厂模式隔离了具体类的生成,使得客户并不需要知道什么被创建。由于这种隔离,更换一个具体工厂就变得相对容易,所有的具体工厂都实现了抽象工厂中定义的那些公共接口,因此只需改变具体工厂的实例,就可以在某种程度上改变整个软件系统的行为。抽象工厂封装了变化,封装了对象创建的具体细节,对客户端隐藏对象创建的具体细节,符合"封装变化原则"。
(2) 当一个产品族中的多个对象被设计成一起工作时,它能够保证客户端始终只使用同一个产品族中的对象。
(3) 增加新的产品族很方便,无须修改已有系统,符合“开闭原则”。
(4) 客户端可以针对抽象进行编程,而不需要知道具体类型,符合"针对接口进行编程而不是针对具体进行编程原则"。
2.主要缺点
抽象工厂模式的主要缺点如下:
增加新的产品等级结构麻烦,需要对原有系统进行较大的修改,甚至需要修改抽象层代码,这显然会带来较大的不便,违背了“开闭原则"
3、抽象工厂模式具体应用
(1)根据项目的需要,可以使用Sqlserver、Access、Mysql等数据库存储一些对象。例如用任意一种数据库存储部门表、员工表。这是抽象工厂模式的一种应用,可以随时切换数据库进行存储。
(2)QQ空间背景样式,博客背景样式等都提供了各种风格的样式。在Windows平台和Linux平台下会有不同的显示方式。
(3)开发一个可以在Windows、Linux、Android平台下运行的图片阅读器,不同平台下有不同的显示方式。
(4)网页下载工具的开发: 根据需要可以下载新浪网页、腾讯网页、搜狐网页等。而在不同平台下,下载方式可能会不相同。
(5)淘宝购物最后一个支付环节,可以选择货到付款、网上银行、支付宝等类型支付。在不同平台上,各种支付的方式可能在操作上存在些差异。
(6)开发一款可以运行在Windows和Andorid平台的射击游戏,Windows下有手枪、AK47、步枪、大刀等武器,Linux同样也存在这些武器。
(7)开发火车票图像识别软件(OCR),可以在Windows平台和Linux平台运行。对识别的结果可以保存为txt、word、pdf等格式。
(8)STL里面的集合容器List、Vector、Deque等,不管使用哪种类型的容器,都可以使用迭代进行抽象操作。
(9)生活中也有很多类似的工厂: 伟创力各个生产车间生产不同的产品; 生产海尔冰箱、海尔空调这些产品;肯德基麦当劳在全球设置各个分工厂;中国石油、紫金矿业、景德镇陶瓷、中国移动、伊利蒙牛在全国的各个分工厂;顺丰快递、申通快递在全国的驿站等。