抽象工厂模式

上传人:565****5d4 文档编号:247439989 上传时间:2024-10-18 格式:PPTX 页数:39 大小:2.80MB
返回 下载 相关 举报
抽象工厂模式_第1页
第1页 / 共39页
抽象工厂模式_第2页
第2页 / 共39页
抽象工厂模式_第3页
第3页 / 共39页
点击查看更多>>
资源描述
,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,2013/4/27,#,软件设,计,计模式,第二讲,抽,抽象,工,工厂模,式,式,抽象工,厂,厂模式,名称,:,抽象工,厂,厂模式,(,AbstractFactory Pattern),或,Kit,模式,意图:,提,提供一,系,系列相,关,关或相,互,互依赖,对,对象的,接,接口而,无,无需指,定,定他们,具,具体的,类,类。,核心,:,抽象工,厂,厂模式,(,(,AbstractFactory Pattern,)提供,了,了一个,接,接口,,用,用于创,建,建相关,或,或者依,赖,赖对象,的,的家族,,,,而不,需,需要指,定,定具体,实,实现类,。,。抽象,工,工厂模,式,式允许,客,客户使,用,用抽象,接,接口来,创,创建一,组,组相关,的,的产品,,,,客户,类,类和工,厂,厂类分,开,开,客,户,户需要,任,任何产,品,品的时,候,候,只,需,需要向,工,工厂请,求,求即可,,,,客户,无,无须修,改,改就可,以,以获得,新,新产品,。,抽象工,厂,厂模式,抽象工,厂,厂模式,的,的动机,考虑一,个,个支持,多,多种视,感,感(,look-and- feel),表准的,用,用户界,面,面工具,包,包,例,如,如,Motif,和,PresentationManager,.,不同的,视,视感风,格,格为滚,动,动条、,窗,窗口和,按,按钮等,用,用户界,面,面“窗,口,口组件,”,”定义,不,不同的,外,外观和,行,行为。,为保证,视,视感风,格,格标准,间,间的可,移,移植性,,,,一个,应,应用不,应,应该为,一,一个特,定,定的视,感,感外观,硬,硬编码,它,它的窗,口,口组建,。,。在整,个,个应用,中,中实例,化,化特定,视,视感风,格,格的窗,口,口组件,类,类将使,得,得以后,很,很难改,变,变视感,风,风格,。,抽象工,厂,厂模式,的,的动机,为解决,这,这一问,题,题,定,义,义一个,抽,抽象的,WidgetFactory,类,这,个,个类声,明,明了一,个,个用来,创,创建每,一,一个类,基,基本窗,口,口组件,的,的接口,.,每一类,窗,窗口组,件,件都有,一,一个抽,象,象类,,而,而具体,子,子类则,实,实现了,窗,窗口组,件,件的特,定,定视感,风,风格。,对,对于一,个,个抽象,窗,窗口组,件,件类,,WidgetFactory,接口都,有,有一个,返,返回新,窗,窗口组,件,件对象,的,的操作,。,。,客户调,用,用这些,操,操作以,获,获得窗,口,口组件,实,实例,,但,但客户,并,并不知,道,道他们,正,正在使,用,用的是,哪,哪些具,体,体类。,这,这样客,户,户就不,依,依赖于,一,一般的,视,视感风,格,格。,抽象工,厂,厂模式,的,的作用,抽象工,厂,厂模式,的,的类图,抽象工,厂,厂模式,的,的类图,抽象工,厂,厂模式,的,的时序,图,图,抽象工,厂,厂模式,的,的实例,一,一,抽象工,厂,厂模式,的,的实例,二,二,大陆生,态,态系统,:,:,已知动,物,物世界,中,中各个,大,大陆的,动,动物是,不,不同的,,,,例如,非,非洲有,狮,狮子和,角,角马,,美,美洲有,狼,狼和野,牛,牛。,动物可,划,划分为,食,食草和,食,食肉动,物,物,狮,子,子和美,洲,洲狼属,于,于食肉,动,动物,,而,而野牛,和,和角马,属,属于食,草,草动物,。,。,狮子捕,食,食角马,,,,美洲,狼,狼捕食,野,野牛。,抽象工,厂,厂模式,的,的实例,二,二,抽象工,厂,厂模式,的,的实例,三,三,电脑生,产,产:,IBM, Dell,都是著,名,名的计,算,算机生,产,产厂家,,,,他们,采,采用的,主,主板、,硬,硬盘和,CPU,是不同,的,的,但,主,主板、,硬,硬盘和,CPU,之间一,定,定要兼,容,容。,现硬盘,有,有,Maxtor,和,WestDigit,两种,,CPU,有,AMD,和,Intel,, 主,板,板有,MSI86,5,PE,和,MSIK,7,N,2,G,两种。,IBM,采用,Intel,的,CPU,和,WestDigit,的硬盘,,,,,Dell,采用,AMD,的,CPU,和,Maxtor,的硬盘,。,。,抽象工,厂,厂模式,的,的实例,三,三,抽象工,厂,厂模式,的,的实例,三,三,抽象工,厂,厂模式,的,的实例,三,三,抽象工,厂,厂模式,的,的实例,三,三,抽象工,厂,厂模式,的,的实例,三,三,抽象工,厂,厂模式,的,的实例,三,三,抽象工,厂,厂模式,的,的实例,三,三,抽象工,厂,厂模式,的,的实例,四,四,综合案,例,例,(,肯德基,):,故事中,的,的角色,肯德基,店,店,生产食,物,物的工,厂,厂,食物(,麻,麻辣鸡,腿,腿汉堡,、,、奥尔,良,良烤鸡,翅,翅、薯,条,条、可,乐,乐),工厂生,产,产的产,品,品,爸爸、,儿,儿子,客户,抽象工,厂,厂模式,的,的实例,四,四,综合案,例,例,(,肯德基,):,抽象化,分,分析,“,开,-,闭,”,原则,-,抽象,抽象最,大,大话,-“,依赖倒,置,置,”,抽象工,厂,厂模式,的,的实例,四,四,抽象工,厂,厂模式,的,的实例,四,四,package com.demo.factory.model;,/*,*,*食品,基,基类,*,/,publicabstractclassAbstractBaseFood,/,类别,protectedString kind;,/,数量,protectedint num;,/,价格,protectedfloatprice;,/,合计,publicfloattotalPrice(),returnthis.num*this.price;,抽象工,厂,厂模式,的,的实例,四,四,package com.demo.factory.model;,/*,* 抽,象,象食物,接,接口,*,*,/,publicinterface IFood,/*,* 打,印,印输出,食,食物信,息,息,*,/,void printMesage();,抽象工,厂,厂模式,的,的实例,四,四,package com.demo.factory.model;,/*,* 汉,堡,堡类,*,*,/,publicabstractclassHamburgextends AbstractBaseFoodimplementsIFood,publicvoidprintMesage(),System.,out.println(- +this.kind +,风味汉,堡,堡, t,单价,: + this.price+t,数量,:+ this.num +,t,合计,:+ this.totalPrice();,抽象工,厂,厂模式,的,的实例,四,四,package com.demo.factory.model.kfc;,importcom.demo.factory.model.Hamburg;,/*,* 中,国,国风味,的,的麻辣,鸡,鸡腿汉,堡,堡,*,*,/,publicclassChinaHanburm extendsHamburg,/*,*构造,方,方法,*,* paramkind,* paramprice,* paramnum,*,/,publicChinaHanburm(intnum),this.kind=,麻辣,;,this.price =14.0f;,this.num= num;,抽象工,厂,厂模式,的,的实例,四,四,package com.demo.factory.itf;,importcom.demo.factory.model.Beverage;,importcom.demo.factory.model.ChickenWings;,importcom.demo.factory.model.FrenchFries;,importcom.demo.factory.model.Hamburg;,/*,*,肯德基,抽,抽象工,厂,厂 *,*,/,publicinterface IKfcFactory,/,生产汉,堡,堡,publicHamburgcreateHamburg(intnum);,/,生产薯,条,条,publicFrenchFriescreateFrenchFries(int num);,/,生产鸡,翅,翅,publicChickenWings createChickenWings(intnum);,/,生产饮,料,料,publicBeveragecreateBeverage(int num);,抽象工,厂,厂模式,的,的实例,四,四,package com.demo.factory.itf;,importcom.demo.factory.model.Beverage;,importcom.demo.factory.model.ChickenWings;,publicclassChinaKfcFactory implementsIKfcFactory,/,生产可,乐,乐,publicBeveragecreateBeverage(int num),returnnew ChinaBeverage(num);,/,生产奥,尔,尔良烤,鸡,鸡翅,publicChickenWings createChickenWings(intnum),returnnew ChinaChickenWings(num);,/,成产薯,条,条,publicFrenchFriescreateFrenchFries(int num),returnnew ChinaFrenchFries(num);,/,生产麻,辣,辣鸡腿,汉,汉堡,publicHamburgcreateHamburg(intnum),returnnew ChinaHanburm(num);,抽象工,厂,厂模式,的,的实例,四,四,/*,* 客,户,户类,*,/,publicclassCustomer,/,抽象工厂,private IKfcFactorykfcFactory;,/,构造方法将,抽,抽象工厂作,为,为参数传入,public Customer(IKfcFactory kfcFactory),this.kfcFactory= kfcFactory;,/*,* 订购食,物,物,*,/,/,订购鸡腿汉,堡,堡,public float orderHamburg(intnum),/,获得麻辣鸡,腿,腿汉堡,Hamburg hamburg= kfcFactory.createHamburg(num);,/,输出订购信,息,息,hamburg.printMesage();,/,返回总价,return hamburg.totalPrice();,抽象工厂模,式,式的实例四,public class MainApp,/*,* 主应用,程,程序方法,*,/,public static void main(String args),/*,* 定义一,个,个肯德基工,厂,厂,IKfcFactory,*,/,IKfcFactory kfcFactory =new ChinaKfcFactory();,/*,* 用户进,入,入肯德基开,始,始点餐,*,/,Customer customer =new Customer(kfcFactory);,抽象工厂模,式,式的实例四,/*,*开始点餐,*,/,/,一个麻辣鸡,腿,腿汉堡,floathamhurgMoney =customer.orderHamburg(1);,/,四个新奥尔,良,良烤鸡翅,floatchickenWingsMoney =customer.orderChickenWings(4);,/,一包薯条,floatfrenchFriesMoney =customer.orderFrenchFries(1);,/,两杯可乐,floatbeverageMoney= customer.orderBeverage(2);,System.,out.println(,总计,: +(hamhurgMoney +chickenWingsMoney +frenchFriesMoney +beverageMoney);,抽象工厂模,式,式的实例四,1,多用对象,组,组合,少用,继,继承,2,针对抽象,编,编程,不针,对,对实现编程,3,产品对象,通,通过工厂暴,露,露的方法创,建,建,抽象工厂模,式,式和工厂模,式,式的区别,工厂方法模,式,式用来创建,一,一个抽象产,品,品, 具体,工,工厂实现工,厂,厂方法来创,建,建具体产品,,,,而抽象工,厂,厂模式用来,创,创建一个产,品,品家族的抽,象,象类类型。,抽象工厂模,式,式的优势与,缺,缺陷,优势:隔离,了,了具体类的,生,生成, 使,得,得客户不知,道,道什么被创,建,建了,因此,更,更换一个具,体,体工厂变得,相,相对容易。,优势:当一,个,个产品族中,多,多个对象被,设,设计成一起,工,工作时,,抽,抽象工厂保,证,证客户端只,是,是用同一产,品,品族中的对,象,象。,缺陷:添加新的,产,产品对象时,,,,难以扩展,抽,抽象工厂以,产,产生新种类,的,的产品,因,为,为,AbstractFactory,规定了所有,可,可能被创建,的,的产品集合,,,,从而涉及,到,到对,AbstractFactory,及其所有子,类,类的修改。,抽象工厂模,式,式的优势与,缺,缺陷,优势:隔离,了,了具体类的,生,生成, 使,得,得客户不知,道,道什么被创,建,建了,因此,更,更换一个具,体,体工厂变得,相,相对容易。,优势:当一,个,个产品族中,多,多个对象被,设,设计成一起,工,工作时,,抽,抽象工厂保,证,证客户端只,是,是用同一产,品,品族中的对,象,象。,缺陷:添加新的,产,产品对象时,,,,难以扩展,抽,抽象工厂以,产,产生新种类,的,的产品,因,为,为,AbstractFactory,规定了所有,可,可能被创建,的,的产品集合,,,,从而涉及,到,到对,AbstractFactory,及其所有子,类,类的修改。,抽象工厂模,式,式的应用场,景,景,一个系统要,独,独立于它产,品,品的创建、,组,组合和表示,的,的时候。,一个系统要,由,由多个产品,系,系列中的一,个,个来配置时,。,。,当你要强调,一,一系列相关,的,的产品对象,的,的设计以便,进,进行联合使,用,用时。,当你提供一,个,个产品类库,,,,而只是想,显,显示他们的,接,接口而不是,现,现实时。,作业,采用抽象工,厂,厂模式对大,陆,陆生态模式,进,进行,UML,建模,并进,行,行实现。,演讲完毕,,谢,谢谢观看!,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 商业管理 > 市场营销


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!