Java设计模式之抽象工厂模式
一、概述
抽象工厂模式是对工厂方法模式的再升级,但是二者面对的场景稍显差别。
工厂方法模式面对的目标一般都是单类的,就比如《Java设计模式系列工厂方法模式》中所举的例子,目标就是桌子这一类商品。
如果是这样的呢:生产的是桌椅组合,目标的一套商品,每一套商品中的每类商品的种类的不同的,不同的组合形成不同的套装。
这种情况下,就需要使用抽象工厂模式二、实例
我们还是以家具为例:
桌子接口:Desk桌子接口publicinterfaceDesk{StringgetType();}
木质桌子:WoodenDesk木质桌子publicclassWoodenDeskimplementsDesk{privateStringtype木质桌;OverridepublicStringgetType(){returntype;}}
塑料桌子:PlasticDesk塑料桌publicclassPlasticDeskimplementsDesk{privateStringtype塑料桌;OverridepublicStringgetType(){returntype;}}
椅子接口:Chair椅子接口publicinterfaceChair{StringgetType();}
木质椅子:WoodenChair木质椅publicclassWoodenChairimplementsChair{privateStringtype木质椅;OverridepublicStringgetType(){returntype;}}
塑料椅:PlasticChair塑料椅publicclassPlasticChairimplementsChair{privateStringtype塑料椅;OverridepublicStringgetType(){returntype;}}
家具工厂接口:FurnitureFactory家具工厂publicinterfaceFurnitureFactory{DeskcreateDesk();ChaircreateChair();}
木质家具工厂:WoodenFurnitureFactory木质家具工厂publicclassWoodenFurnitureFactoryimplementsFurnitureFactory{OverridepublicDeskcreateDesk(){returnnewWoodenDesk();}OverridepublicChaircreateChair(){returnnewWoodenChair();}}
塑料家具工厂:PlasticFurnitureFactory塑料家具工厂publicclassPlasticFurnitureFactoryimplementsFurnitureFactory{OverridepublicDeskcreateDesk(){returnnewPlasticDesk();}OverridepublicChaircreateChair(){returnnewPlasticChair();}}
测试类:Clienter测试类publicclassClienter{publicstaticvoidmain(String〔〕args){FurnitureFactoryfactorynewPlasticFurnitureFactory();Deskdeskfactory。createDesk();Chairchairfactory。createChair();System。out。println(desk。getType());System。out。println(chair。getType());}}
执行结果:塑料桌塑料椅三、解析
通过上面的例子,对比《Java设计模式之工厂方法模式》中工厂方法模式的例子,可以看出二者场景的不同之处,抽象工厂模式面对的是一个组合体,如果将这一点排除的话,其他方面看起来,二者还是相似的。
这里在目标没添加一种组合时,就需要新建一个工厂实现来对应,这一点满足开闭原则,不会修改已有类。
但是有一种情况,会导致修改原有类,那就是当目标需要在家具中新增一种家具类型的时候,比如例子中,家具组合中只包含桌子和椅子,如果再添加一种书柜,那么所有的工厂包括工厂接口都面临修改。
如何破解电脑系统登录密码,和一开机就要密码的COMS密码如何破解电脑系统登录密码,和一开机就要密码的COMS密码电脑开机密码分为两种,一种是进到系统,登录用户时,需要输入的密码,这是用户密码,也是系统登录密码,这种密码最常见。……
Macbookpro14是否值得采购最近,头条上关于MBP14或16这台电脑的内容可谓多如牛毛!各种评测的都有,说好的,说坏的都有,你说MBP14的配置强么?强!!虽然真机我也还没见过,但性能上大家从这么多的评测……
浙商证券给予中国联通买入评级三季报延续高质量稳健发展态势,5G和创新业务双引擎驱动增长,成本费用有效管控提升盈利能力,维持买入评级。投资要点业绩符合预期,持续高质量稳健发展态势公司19月……
延华智能,翠微股份,大金重工,曲江文旅,格力电器,三一重工露笑科技第三代半导体总龙头。曲江文旅是旅游概念。深南股份是大数据概念。延华智能是数据中心概念。翠微股份了百货零售概念。亚联发展是大数据概念。京蓝科技是物联网概念。任子行是网络安……
为什么微信支付变服务了?更精准定性的需要。原因如下:1、微信支付变服务,更容易被用户接受体验,言语用词比较温馨。2、支付涵盖范围太窄,服务涵盖范围广。而且原有支付里边不仅具备支付功能,也有……
4年快递单价下滑6成,搅局者极兔让价格战再加码没有统一的服装,没有统一的电瓶车,正是这样一支快递团队在过去一年搅乱了整个中国快递行业,它就是极兔速递。近日,第一财经记者走访了极兔速递位于上海的多个网点。(对于招聘快递……
各大APP被曝光!网友怒了你就这么对我们?局外人说局外事各位看官老爷大家好,我是局外人小智今天带大家吃瓜一件和大家息息相关的事!近日,上海复旦大学的孙教授带领团队做了一项打车调研,结果显示,……
机构2021年vivo国内手机市场份额排名第一?预计2022张兴旺中国证券报中证网中证网讯(记者张兴旺)日前,市场研究机构CounterpointResearch发布报告称,2021年中国智能手机出货量排名中,vivo、OPPO、……
激光位移传感器市场发展前景好么,应用都有哪些领域?据QYResearch研究中心调查发现激光位移传感器在消费电子和汽车领域的应用日益增多,加上其他行业的需求不断增长,这对全球激光位移传感器市场非常有利。目前,在国外工业发达国家……
不重蹈阿里覆辙,京东主动退场,刘强东的做法非常聪明作为中国电商行业的老大和老二,马云和刘强东经常被拿来做比较。马云的性格活跃,富有激情,善于演讲。按照刘强东的评价,喜欢站在国家、社会的高度。而刘强东相对更接地气一点,喜欢谈员工……
华为P50系列大揭秘这个涟漪云波,它藏了哪些奥秘?华为P系列始终在外观上引领市场潮流。这一次,华为设计师团队再次领先一步,在华为P50Pro上打造涟漪云波动态色彩。今天小侦探就带领大家,一起掀开HUAWEIP50系列涟漪云波动……
现在什么行业前景好?中国软件行业虽然经历了近30年的发展,到了2015年伴随移动互联网发展,伴随政府的互联网发展方针,软件行业进入了继2002年互联网泡沫之后的又一次软件大发展时期,手机已经被各种……