电子文档交易市场
安卓APP | ios版本
电子文档交易市场
安卓APP | ios版本
换一换
首页 金锄头文库 > 资源分类 > PPTX文档下载
分享到微信 分享到微博 分享到QQ空间

工厂模式JAVA

  • 资源ID:263367123       资源大小:541.80KB        全文页数:58页
  • 资源格式: PPTX        下载积分:18金贝
快捷下载 游客一键下载
账号登录下载
微信登录下载
三方登录下载: 微信开放平台登录   支付宝登录   QQ登录  
二维码
微信扫一扫登录
下载资源需要18金贝
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
如填写123,账号就是123,密码也是123。
支付方式: 支付宝    微信支付   
验证码:   换一换

 
账号:
密码:
验证码:   换一换
  忘记密码?
    
1、金锄头文库是“C2C”交易模式,即卖家上传的文档直接由买家下载,本站只是中间服务平台,本站所有文档下载所得的收益全部归上传人(卖家)所有,作为网络服务商,若您的权利被侵害请及时联系右侧客服;
2、如你看到网页展示的文档有jinchutou.com水印,是因预览和防盗链等技术需要对部份页面进行转换压缩成图而已,我们并不对上传的文档进行任何编辑或修改,文档下载后都不会有jinchutou.com水印标识,下载后原文更清晰;
3、所有的PPT和DOC文档都被视为“模板”,允许上传人保留章节、目录结构的情况下删减部份的内容;下载前须认真查看,确认无误后再购买;
4、文档大部份都是可以预览的,金锄头文库作为内容存储提供商,无法对各卖家所售文档的真实性、完整性、准确性以及专业性等问题提供审核和保证,请慎重购买;
5、文档的总页数、文档格式和文档大小以系统显示为准(内容中显示的页数不一定正确),网站客服只以系统显示的页数、文件格式、文档大小作为仲裁依据;
6、如果您还有什么不清楚的或需要我们协助,可以点击右侧栏的客服。
下载须知 | 常见问题汇总

工厂模式JAVA

JAVA工厂模式 工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类。工厂模式的几种形态 1简单工厂Simple Factory模式,又称静态工厂方法模式Static Factory Method Pattern。 2工厂方法Factory Method模式,又称多态性工厂Polymorphic Factory模式 或虚拟构造子Virtual Constructor模式; 3抽象工厂Abstract Factory模式,又称工具箱Kit 或Toolkit模式。简单工厂实例 比方说有一个农场公司,专门向市场销售各类水果。在这个系统里需要描述以下的水果: 葡萄 Grape 草莓 Strawberry 苹果 Apple 水果与其他的植物有很大的不同,就是水果最终是可以采摘食用的。那么一个自然的作法就是建立一个各种水果都适用的接口,以便与农场里的其他植物区分开。代码清单1:接口Fruit 的源代码public interface Fruit/* 生长*/void grow();/* 收获*/void harvest();/* 种植*/void plant();代码清单2:类Apple 的源代码public class Apple implements Fruitprivate int treeAge;public void grow()log(Apple is growing.);public void harvest()log(Apple has been harvested.);public void plant()log(Apple has been planted.);public static void log(String msg)System.out.println(msg);public int getTreeAge()return treeAge;public void setTreeAge(int treeAge)this.treeAge = treeAge;代码清单3:类Grape 的源代码public class Grape implements Fruitprivate boolean seedless;public void grow()log(Grape is growing.);public void harvest()log(Grape has been harvested.);public void plant()log(Grape has been planted.);public static void log(String msg)System.out.println(msg);public boolean getSeedless()return seedless;public void setSeedless(boolean seedless)this.seedless = seedless;类Strawberry 的源代码public class Strawberry implements Fruit public void grow() System.out.println(Strawberry is growing.); public void harvest() System.out.println(Strawberry has been harvested.); public void plant() System.out.println(Strawberry has been planted.); FruitGardener 类的源代码public class FruitGardener public static Fruit factory(String which) throws BadFruitException if (which.equalsIgnoreCase(apple) return new Apple(); else if (which.equalsIgnoreCase(strawberry) return new Strawberry(); else if (which.equalsIgnoreCase(grape) return new Grape(); else throw new BadFruitException(Bad fruit request); 简单工厂模式的结构 工厂类Creator角色:担任这个角色的是工厂方法模式的核心,含有与应用紧密相关的商业逻辑。工厂类在客户端的直接调用下创立产品对象,它往往由一个具体Java 类实现。 抽象产品Product角色:担任这个角色的类是工厂方法模式所创立的对象的父类,或它们共同拥有的接口。抽象产品角色可以用一个Java 接口或者Java 抽象类实现。 具体产品Concrete Product角色:工厂方法模式所创立的任何对象都是这个角色的实例,具体产品角色由一个具体Java 类实现。Creator 类的源代码public class Creator public static Product factory() return new ConcreteProduct(); 抽象角色Product 接口的源代码public interface Product具体产品角色ConcreteProduct 类的源代码public class ConcreteProduct implements Productpublic ConcreteProduct()多层次的产品结构简单模式的优缺点 优点:模式的核心是工厂类。这个类含有必要的判断逻辑,可以决定在什么时候创立哪一个产品类的实例。而客户端那么可以免除直接创立产品对象的责任,而仅仅负责“消费产品。简单工厂模式通过这种做法实现了对责任的分割。 缺点一: 当产品类有复杂的多层次等级结构时,工厂类只有它自己。以不变应万变,就是模式的缺点。 这个工厂类集中了所有的产品创立逻辑,形成一个无所不知的全能类,有人把这种类叫做上帝类God Class。如果这个全能类代表的是农场的一个具体园丁的话,那么这个园丁就需要对所有的产品负责,成了农场的关键人物,他什么时候不能正常工作了,整个农场都要受到影响。 缺点二: 当产品类有不同的接口种类时,工厂类需要判断在什么时候创立某种产品。这种对时机的判断和对哪一种具体产品的判断逻辑混合在一起,使得系统在将来进行功能扩展时较为困难。 缺点三: 由于简单工厂模式使用静态方法作为工厂方法,而静态方法无法由子类继承,因此,工厂角色无法形成基于继承的等级结构。“开闭原那么 “开闭原那么要求一个系统的设计能够允许系统在无需修改的情况下,扩展其功能。 简单工厂角色只在有限的程度上支持“开闭原那么。工厂方法模式 工厂方法模式的用意是定义一个创立产品对象的工厂接口,将实际创立工作推迟到子类中。 首先,在工厂方法模式中,核心的工厂类不再负责所有的产品的创立,而是将具体创立的工作交给子类去做。这个核心类那么摇身一变,成为了一个抽象工厂角色,仅负责给出具体工厂子类必须实现的接口,而不接触哪一个产品类应当被实例化这种细节。工厂方法模式的结构工厂方法模式的系统涉及到的角色 抽象工厂Creator角色:担任这个角色的是工厂方法模式的核心,它是与应用程序无关的。任何在模式中创立对象的工厂类必须实现这个接口。在上面的系统中这个角色由Java 接口Creator 扮演;在实际的系统中,这个角色也常常使用抽象Java 类实现。 具体工厂Concrete Creator角色:担任这个角色的是实现了抽象工厂接口的具体Java 类。具体工厂角色含有与应用密切相关的逻辑,并且受到应用程序的调用以创立产品对象。在本系统中给出了两个这样的角色,也就是具体Java 类ConcreteCreator1 和ConcreteCreator2。工厂方法模式的系统涉及到的角色 抽象产品Product角色:工厂方法模式所创立的对象的超类型,也就是产品对象的共同父类或共同拥有的接口。在本系统中,这个角色由Java 接口Product 扮演;在实际的系统中,这个角色也常常使用抽象Java 类实现。 具体产品Concrete Product角色:这个角色实现了抽象产品角色所声明的接口。工厂方法模式所创立的每一个对象都是某个具体产品角色的实例。实例农场工厂方法模式和简单工厂模式 工厂方法模式的核心是一个抽象工厂类,而简单工厂模式把核心放在一个具体类上。 工厂方法模式可以允许很多具体工厂类从抽象工厂类中将创立行为继承下来,从而可以成为多个简单工厂模式的综合,进而推广了简单工厂模式。工厂方法模式和简单工厂模式 与简单工厂模式中的情形一样的是,ConcreteCreator 的factory() 方法返还的数据类型是一个抽象类型Product,而不是哪一个具体产品类型,而客户端也不必知道所得到的产品的真实类型。这种多态性设计将工厂类选择创立哪一个产品对象、如何创立这个对象的细节完全封装在具体工厂类内部。 对于增加新的产品类而言,这个系统完全支持“开-闭原那么。抽象工厂模式抽象工厂模式与工厂方法模式的区别 抽象工厂模式与工厂方法模式的最大区别就在于,工厂方法模式针对的是一个产品等级结构;而抽象工厂模式那么需要面对多个产品等级结构。抽象工厂模式的结构 抽象工厂模式GOF95是对象的创立模式,它是工厂方法模式的进一步推广。 假设一个子系统需要一些产品对象,而这些产品又属于一个以上的产品等级结构。那么为了将消费这些产品对象的责任和创立这些产品对象的责任分割开来,可以引进抽象工厂模式。这样的话,消费产品的一方不需要直接参与产品的创立工作,而只需要向一个公用的工厂接口请求所需要的产品。 下面就以一个示意性的系统为例,说明这个模式的结构。产品结构A和B系统类图抽象工厂模式涉及到的角色 抽象工厂AbstractFactory角色:担任这个角色的是工厂方法模式的核心,它是与应用系统的商业逻辑无关的。通常使用Java 接口或者抽象Java 类实现,而所有的具体工厂类必须实现这个Java 接口或继承这个抽象Java 类。 具体工厂类Conrete Factory角色:这个角色直接在客户端的调用下创立产品的实例。这个角色含有选择适宜的产品对象的逻辑,而这个逻辑是与应用系统的商业逻辑紧密相关的。通常使用具体Java 类实现这个角色。抽象工厂模式涉及到的角色 抽象产品Abstract Product角色:担任这个角色的类是工厂方法模式所创立的对象的父类,或它们共同拥有的接口。通常使用Java 接口或者抽象Java 类实现这一角色。 具体产品Concrete Product角色:抽象工厂模式所创立的任何产品对象都是某一个具体产品类的实例。这是客户端最终需要的东西,其内部一定充满了应用系统的商业逻辑。通常使用具体Java 类实现这个角色。 一般而言,有多少个产品等级结构,就会在工厂角色中发现多少个工厂方法。 每一个产品等级结构中有多少具体产品,就有多少个产品族,也就会在工厂等级结构中发现多少个具体工厂。在什么情形下应当使用抽象工厂模式?1一个系统不应当依赖于产品类实例如何被创立、组合和表达的细节。这对于所有形态的工厂模式都是重要的;2这个系统的产品有多于一个的产品族,而系统只消费其中某一族的产品;上面这一条叫做抽象工厂模式的原始用意。3同属于同一个产品族的产品是在一起使用的,这一约束必须要在系统的设计中表达出来;4系统提供一个产品类的库,所有的产品以同样的接口出现,从而使客户端不依赖于实现。抽象工厂模式在农场系统中的实现“开-闭原那么1增加新的产品族?2增加新的产品等级结构?

注意事项

本文(工厂模式JAVA)为本站会员(丰***)主动上传,金锄头文库仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即阅读金锄头文库的“版权提示”【网址:https://www.jinchutou.com/h-59.html】,按提示上传提交保证函及证明材料,经审查核实后我们立即给予删除!

温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




关于金锄头网 - 版权申诉 - 免责声明 - 诚邀英才 - 联系我们
手机版 | 川公网安备 51140202000112号 | 经营许可证(蜀ICP备13022795号)
©2008-2016 by Sichuan Goldhoe Inc. All Rights Reserved.