java-android设计模式学习笔记(4):抽象工厂模式-编程开发技术

java-android设计模式学习笔记(4):抽象工厂模式-编程开发技术

ID:30776433

大小:349.33 KB

页数:9页

时间:2019-01-03

java-android设计模式学习笔记(4):抽象工厂模式-编程开发技术_第1页
java-android设计模式学习笔记(4):抽象工厂模式-编程开发技术_第2页
java-android设计模式学习笔记(4):抽象工厂模式-编程开发技术_第3页
java-android设计模式学习笔记(4):抽象工厂模式-编程开发技术_第4页
java-android设计模式学习笔记(4):抽象工厂模式-编程开发技术_第5页
资源描述:

《java-android设计模式学习笔记(4):抽象工厂模式-编程开发技术》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、java/android设计模式学习笔记(4):抽象工厂模式-编程开发技术java/android设计模式学习笔记(4):抽象工厂模式原文出处:Shawn_Dut再来介绍一下抽象工厂模式(AbstactFactoryPattern),也是创建型模式之一,上篇I•専客主要介绍了工厂方法模式。抽象工厂模式和工厂方法模式稍有区别。工厂方法模式屮工厂类生产出来的产品都是具体的,也就是说每个工厂都会生产某一种具体的产品,但是如果工厂类中所生产出來的产品是多种多样的,工厂方法模式也就不再适用了,就要使用抽象工厂模式了。抽象工厂模式的起源或者最早的应用,是对不同操作系

2、统的图形化解决方案,比如在不同操作系统中的按钮和文字框的不同处理,展示效果也不一样,对于毎一个操作系统,其木身构成一个工厂类,而按钮与文字框控件构成一个产品类,两种产品类两种变化,各自有自己的特性,比如Windows,Unix和MacOS下的Button和Text等。所以据此,我们可以初步构建框架:然后对于Windows系统來说需要生成的是WindowsButton和WindowsText产品类对象,其他两个系统一样也需要对应的对象。为了达到“为创建一组相关或者是相互依赖的对象捉供一个接口,而不需要指定它们的具体类”的松散耦合原则,这时使用抽彖工厂模式就

3、非常契合。PS:对技术感兴趣的同鞋加群544645972-起交流。设计模式总目录java/android设计模式学习笔记目录特点抽象工厂模式(AbstactFactoryPattern)提供一个接口,用于创建相关或依赖对象的家族,而不需要明确指明具体类。和工厂方法模式一样,抽象工厂模式依然符合“针对抽象编程,不针对具体类编程”的原则,将客户端和具体类解耦,增加扩展性,契合设计模式屮的依赖倒置原则和里氏替换原则。UML类图我们来看看抽彖工厂模式的uml类图:虽然抽彖工厂模式的类繁多,但是主要还是分为4类:•AbstractFactory:抽象工厂角色(对应

4、【Factory接口),它声明了一组用于创建不同产品的方法,每一个方法对应一种产胡,如图中的IFnctory接口就有createButton和crcatcTcxt方法用于创建IBLitton对象和ITcxt对象。•ConcreteFactory:具体工厂角色(对应WindowFactory,UnixFactory和MacOSFactory类),它实现了在抽彖工厂中定义的创建产品的方法,生成一组具体产品,这些产品构成一个产品种类,每一个产品都位于某个产品等级结构中。•AbstractProduct:抽象产品角色(对应IButton和IText接口),他定义

5、了几种产品的基本行为。•ConcrctcProduct:具体产品角色(对应WindowsButton和WindowsTcxt等6个实现类),它定义具体工厂生产的具体产品对象,实现抽象产品接口屮声明的业务方法。这里用的是一个实例的UID1类图,对应的抽象工厂模式的UH11类图只要把其中的角色换一个名字就可以了,是一样的。示例与源码我们直接根据上而的uml类图来构建我们的图形系统,Button和Text的角色是产品类,他们对应都有3个实现的产品子类;Windows,Unix和MacOS这几个系统应该为具体的工厂类:产品类主要是IButton接口和其实现子类,

6、IText接口和其实现子类。IButton接口和其子类:IButton.classpublicinterfaceTButton{voidshow();}WindowsButton.classpublicclassWindowsButtonimplementsIButton{©Overridepublicvoidshow(){Log.e(z,showz,,"thisisaWindowsbutton〃);UnixButton.classpublicclassUnixButtonimplementsIButton{©Overridepublicvoidshow

7、(){Log.e(z,showz,,气hisisaUnixbutton");MacOSButton.classpublicclassMacOSButtonimplementsIButton{©Overridepublicvoidshow(){Log.e(〃show〃,"thisisaMacOSbutton〃);IText接口和其实现子类:IText・classpublicinterfaceIText{voidshow();}WindowsText.classpublicclassWindowsTextimplementsIText{©Overridepu

8、blicvoidshow(){Log.e(〃show〃,"thisisaWind

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。