工厂方法设计模式的最佳实践-java开发java经验技巧

工厂方法设计模式的最佳实践-java开发java经验技巧

ID:31033051

大小:69.00 KB

页数:6页

时间:2019-01-05

工厂方法设计模式的最佳实践-java开发java经验技巧_第1页
工厂方法设计模式的最佳实践-java开发java经验技巧_第2页
工厂方法设计模式的最佳实践-java开发java经验技巧_第3页
工厂方法设计模式的最佳实践-java开发java经验技巧_第4页
工厂方法设计模式的最佳实践-java开发java经验技巧_第5页
资源描述:

《工厂方法设计模式的最佳实践-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库

1、工厂方法设计模式的最佳实践-编程开发技术工厂方法设计模式的最佳实践木文由ImportNew・郭燧沅翻译自javacodegeekso欢迎加入翻译小组。转载请见文末要求。在前面设计模式的例子中我们已经尝试了工厂模式,今天仍然经常会用到它。在这篇文章中我们将会学习到更加高级并且非常有吸引力的解决方案,这就是工厂方法设计模式。定义:工厂方法模式展示了一种创建对象的方法,它代替了对象来创建子类。工厂方法模式以一种特殊抽象层的方式解决了工厂模式中的类似问题。可以使用new关键字实例化对象,例如对象A创建了另一个对象B:Cla

2、ssBobjB二newClassB();此时对象A持有了对象B的引用。因为现在对象A依赖于对象B,如果后者发生变动那么我们必须对A进行重新编译。当然生命周期并不像这么简单,对彖的创建非常复杂,如果有更多的耦合维护将是一个困难且昂贵的过程。为了避免这类情况的发生,就需要创建设计模式来解决。可以尝试在客户端和对象的创建者Z间创建松耦合,并且给设计者带来其它的好处。工厂方法设计模式就是解决这类问题的方案Z-o常见使用:工厂方法设计模式普遍使用于各种框架Z中,例如Struts,Spring,Apache和装饰设计模式的结合

3、使用。这里也有多种基于工厂模式的J2EE模式,例如DAO模式。让我们來看一个关于服装工厂的例子,此时我们正在设计各种各样的衣服但是客户完全不知道这些服装是如何被创建的。虽然我们添加了一个新的服装类型像夹克,但是客户端代码不需要修改,这就增加了应用程序的灵活性。何时使用工厂方法设计模式?•对象的创建如果需要代码复用却没冇现成的代码可用时,工厂方法设计模式就派上丿kl场了。•类并不知道需要创建的是什么子类。•子类可以指定应该创建什么样的对象。•父类会委托它的子类创建对象。结构下图是强调工厂方法设计模式的一个典型结构。与

4、前面的例子有所不同,这里多添加了一个抽象工厂(工厂)类。对应图屮的参与者如下:•产品:定义了工厂方法创建对象的接口。•具体产品:实现产品的接口。•工厂(创建者):定义了工厂方法的抽彖类并返回一个产品对彖。•具体工厂:该类实现和覆盖了父工厂类声明的方法。客户端(例如类A)想要使用被貝体工厂类(类B)创建的产品。这样的话,客户端仅持冇接口B的引用而不是对象'类以,这样就不需要知道任何冇关类B的资源,事实上可以有多个类实现抽彖类。工厂方法模式类允许子类来决定实例化哪一个类,这意味着什么?它基本上意味着工厂抽象类在不知道实

5、际的具体产品角色类将被实例化为什么的情况卜•就能编码,例如它是裤了还是衬衫,这完全取决于具体的工厂类。现在让我们实现上述模式的商品服装厂(GarmentFactory)例子。让我们先做一些吧,我们不会为具体的产品例如Shirt,java和Trouser,java而重复写代码。这可以在工厂模式这篇文章中找到。用户正面临着一个新的工厂抽彖类的建立。publicabstractclassFactory{protcctedabstractGarmcntTypccrcatcGarmcnts(Stringsclcction);

6、}服装工厂类需要修改来继承抽象工厂类。publicclassGarmentFactoryextendsFactory{publicGarmentTypecreateGarments(Stringselection){if(selection,cqualslgnorcCdsc(,Trouser")){returnnewTrouser();}elseif(selection.equalsIgnoreCase(5Shirt5)){returnnewShirt();thrownewlllegalArgumentExcept

7、ion('Selectiondoesnotexist');客户端类指的是用工厂类和createGarments(选择)类的工厂方法在运彳亍的时候创建产品。Factoryfactory=newGarmentFactory();GarmentTypeobjGarmentType二factory.createGarments(selection);System,out.printin(objGarmentType.print());好处:•代码灵活,松耦合和可复用性,将对象创建的代码从客户端移到了工厂类,那就是它的子类。

8、这非常易于维护相关代码,因为对象的创建非常集中。•客户端代码只处理产品的接口,因此口J以无需修改客户端的逻辑代码就能添加任何具体的产品。•工厂方法的优势之一就是可以多次返回相同的实例,或者可以返回一个子类而不是一个具体类型的对彖。•它鼓励通过工厂创建代码对象的一致性,每个人都必须遵循一套明确的规则,这避免了在不同的客户端使用不同的构造两数。例子:jdbc是该

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。