Android之大话设计模式第三章抽象工厂模式..docxVIP

Android之大话设计模式第三章抽象工厂模式..docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
【原创·教程·连载】《Android之大话设计模式》--设计模式 创建型模式 第三章:抽象工厂模式大话设计模式抽象工厂模式应用场景举例:??时光甜蜜的飞逝,GG和MM过着童话般的王子和公主的浪漫的生活。眼看MM生日就要到了,GG着急了。毕竟,这是自己的第一个女朋友的第一个生日啊。想了千万种方法,问了身边很多朋友,这个傻GG最终还是没有确定最终该如何去做~~~~(_)~~~~ 哎!爱,总是想到太多做的太少^_^ 都快夜里十二点了,GG还在Google和百度上面查询如何给自己的Sweatheart过生日。此时,突然手机短信铃声响了,打开一看,上面写道:“亲爱的,我知道这些天你一直在想我们如何一切过生日,其实,一切都很简单的。简单就好。”,看完短信,GG顿时全身暖流涌动,感觉好幸福^_^,有如此体贴理解人的MM,夫复何求( ⊙ o ⊙ )啊!刚要回复短信,手机铃声又响了,上面写道:“我们还去麦当劳吧,不过这次使我们俩,要换一个地方,到华联那边的麦当劳吧^_^”,GG读着短信,感动的无语了。短信回复道:“一切惟老婆大人之命是从:-O”。GG和MM都沉浸在甜蜜和幸福中^_^抽象工厂模式解释:??抽象工厂模式(Abstact Factory Pattern)是所有形态的工厂模式中最为抽象和最其一般性的。抽象工厂模式可以向客户端提供一个接口,使得客户端在不必指定产品的具体类型的情况下,能够创建多个产品族的产品对象。?抽象工厂中方法对应产品结构,具体工厂对应产品族 英文定义为:Provide an interface forcreating families of related or dependent objects without specifying theirconcrete classes.抽象工厂模式的UML图:? 抽象工厂模式模式中包含的角色及其相应的职责如下: 抽象工厂(Creator)角色:抽象工厂模式的核心,包含对多个产品结构的声明,任何工厂类都必须实现这个接口。?具体工厂(Concrete? Creator)角色: 具体工厂类是抽象工厂的一个实现,负责实例化某个产品族中的产品对象。抽象(Product)产品角色:抽象模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。 具体产品(Concrete Product)角色:抽象模式所创建的具体实例对象。抽象工厂模式深入分析: 抽象工厂模式是在当产品有多个 抽象角色的时候使用的一种创建型设计模式。 按照里氏代换原则,凡是父类适用的地方,子类也必然适用。而在实际系统中,我们需要的是和父类类型相同的子类的实例对象,而不是父类本身,也就是这些抽象产品的具体子类的实例。具体工厂类就是来负责创建抽象产品的具体子类的实例的。 当每个抽象产品都有多于一个的具体子类的时候,工厂角色是如何确定实例化哪一个子类呢?例如说有两个抽象产品角色,而每个抽象产品角色都有两个具体产品。抽象工厂模式提供两个具体工厂角色,分别对应于这两个具体产品角色,每一个具体工厂角色只负责某一个产品角色的实例化。每一个具体工厂类只负责创建抽象产品的某一个具体子类的实例。 每一个模式都是针对一定问题的解决方案,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式针对的是多个产品等级结构。何谓产品族?产品族是指位于不同产品等级结构中,功能相关联的产品组成的家族。一般是位于不同的等级结构中的相同位置上。显然,每一个产品族中含有产品的数目,与产品等级结构的数目是相等的,形成一个二维的坐标系,水平坐标是产品等级结构,纵坐标是产品族。? 对于每一个产品族,都有一个具体工厂。而每一个具体工厂创建属于同一个产品族,但是分属于不同等级结构的产品。 通过引进抽象工厂模式,可以处理具有相同(或者相似)等级结构的多个产品族中的产品对象的创建问题。由于每个具体工厂角色都需要负责不同等级结构的产品对象的创建,因此每个工厂角色都需要提供相应数目的工厂方法,分别用于创建相应数目的等级结构的产品。 如下图所示:抽象工厂模式使用场景分析及代码实现:? MM过生日的时候还是要到麦当劳,但是这次要求是到华联那边的麦当劳去,就是地方不同了,要换换口味和心情。这就是抽象工厂模式的一个很好的体现。首先对不同的麦当劳分店而言,每一种产品,例如说汉堡,都是汉堡,但是每个地方的汉堡在遵循统一标准的前提下又会尽力突出自己的特色,这样这样才能更好的吸引和留住顾客,因为不同的地方,随着环境等的不同,人们的喜好和口味等都会有所不同,但是无论怎么不同,始终还是汉堡,具有汉堡的基本功能。同时,每一个分店都有一系列的产品,例如汉堡、鸡翅等等,这就构成了产品的等级结构。 总之:麦当劳总部相当于抽象工厂,每个分店相当于具体工厂,而每种产品又有所不同。这样在既保持了统一性的前提下,

文档评论(0)

sdgr + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档