欢迎来到天天文库
浏览记录
ID:40296291
大小:185.18 KB
页数:11页
时间:2019-07-30
《Android开发中抽象工厂模式》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、模式解读 abstract是“抽象”,factory是“工厂”,所以合起来abstractfactory就是“抽象工厂”的意思。AbstractFactoryPattern中的抽象工厂则是把各种抽象零件合成抽象产品。换句话说,处理的重点是在接口(api)而不是零件的具体实现。只利用接口(API)就能把零件组合成产品。 模板方法模式和生成模式的情形是在子类进行具体的实现,而抽象工厂模式也同样是由子类来处理具体的实现。在子类就会出现具体工厂利用具体零件组合而成的具体产品。 程序示例 本篇涉及的类较多,较之单例模式而言理解
2、真来比较难。一步步来吧。 本例将使用抽象工厂,制作输出一个HTML语言显示在Android的文本上。由于涉及类比较多,先上UML图,再一一解释: 抽象零件:Item类 caption字段是此项目的“标题”。 makeHtml方法是抽象方法,须等待子类进行实现。一旦调用此方法时,其返回值即为HTML字符串(子类要有这样的执行功能)。 代码: publicabstractclassItem{ protectedStringcaption; publicItem(Stringcaption){ this.ca
3、ption=caption; } publicabstractStringmakeHTML(); }抽象零件:Link类 Link类是以抽象方式表示HTML超链接的类。 url字段用来存储超链网站的URL。该抽象类实现Item抽象类。 代码: /** *以抽象方式表示HTML超链接的类 *@authorAdministrator * */ publicabstractclassLinkextendsItem{ protectedStringurl; publicLink(Stringcaption
4、,Stringurl){ super(caption); //TODOAuto-generatedconstructorstub this.url=url; } } 抽象零件:Tray类 Tray类是表示收集一个以上的Link或Tray类。 Link和Tray则利用add方法把它们找出来。add方法对于“LINK”和“Tray”这部分的表现方式则是将Link和Tray的父类Item设为参数。 Tray类继承了Item类的抽象方法makeHTML,但并未实现。所以Tray类也是抽象类。 代码: /**
5、*表示收集一个以上的Link或Tray的类 *@authorAdministrator * */ publicabstractclassTrayextendsItem{ protectedVectortray=newVector(); publicTray(Stringcaption){ super(caption); //TODOAuto-generatedconstructorstub } publicvoidadd(Itemitem){ tray.add(item); }
6、 } 抽象产品:Page类 Page类则是以抽象的方式表现整个HTML网页的类。如果说LINK和TRAY是抽象零件,那么Page类就可以说是抽象的“产品”(负责最终输出HTML)。Title字段是网页的标题,author是网页的作者。最后以OutPut输出数据。 代码: /** *以抽象的方式表现整个HTML网页的类 * *@authorAdministrator * */ publicabstractclassPage{ protectedStringtitle; protectedStringa
7、uthor; protectedVectorcontent=newVector(); publicPage(Stringtitle,Stringauthor){ this.title=title; this.author=author; } publicvoidadd(Itemitem){ content.add(item); } publicStringoutPut(){ StringBuffersb=newStringBuffer(); sb.append(title+".h
8、tml"); sb.append(makeHtml()); returnsb.toString(); } publicabstractStringmakeHtml(); } 抽象产品参与者规定由抽象工厂参与者所产生的抽象零件和产品的接口(API)。扮演这个参与者的是LINK
此文档下载收益归作者所有