母婴网站怎么做,做seo要先做网站么,短视频seo,电影网站如何优化工厂设计模式解决什么问题工厂设计模式是面向对象环境中最常用的模式之一。 再次来自“创意设计”模式类别#xff0c;即有关对象创建的所有信息。 在某些情况下#xff0c;对象的创建很复杂#xff0c;可能需要某种程度的抽象#xff0c;以便客户端代码不了解这些复杂性和… 工厂设计模式解决什么问题 工厂设计模式是面向对象环境中最常用的模式之一。 再次来自“创意设计”模式类别即有关对象创建的所有信息。 在某些情况下对象的创建很复杂可能需要某种程度的抽象以便客户端代码不了解这些复杂性和内部实现细节。 在某些情况下对象的创建在代码的各个部分中是分散的和重复的。Factory模式通过定义一个专门创建对象的接口解决了这些问题但该接口使实现类具有灵活性来决定要实例化哪个类。 定义 Factory方法模式是定义用于创建对象的接口但将对象创建委托给子类。 目的 查看问题陈述目标应该是 客户端应该不知道对象实例化 客户端应通过公共接口访问对象。 你知道吗 工厂方法设计模式通常与装饰器设计模式一起用于各种框架例如StrutsSpringApache中。 有许多基于此Factory模式的J2EE模式例如DAO模式。 工厂模式使用哪种面向对象设计原理 封装因为它封装了来自客户端的创建代码。 显然您可以认为封装的好处也适用于这种模式例如松耦合和内聚。 实际示例 考虑一个服装工厂该工厂生产各种类型的服装例如衬衫裤子。 消费者可以通过工厂索要所需的服装类型。 但是从消费者的角度来看他们完全不知道是谁在创建此对象。 他们只是知道工厂正在为他们提供所需的服装。 问题陈述 一种标准做法是通过调用“ new”关键字来创建对象。 设想一个场景在客户端类中有多种情况我们调用了多个新关键字来创建新对象。 if (selection.equalsIgnoreCase(Trouser)) {return new Trouser();} else if (selection.equalsIgnoreCase(Shirt)) {return new Shirt();} 如果现在必须添加夹克或毛衣则必须继续修改客户端代码并进一步添加new关键字。 这将导致对客户端代码的依赖性从而使其难以维护。 另一个问题是客户端应用程序必须知道多少类型的具体类可以预先使用。 以后如果我们必须添加另一个具体的类例如毛衣或夹克则必须更改并重新编译客户代码。 解 为了解决上述问题可以显式使用工厂模式。 使用Factory类可以解决访问太多新关键字的第一个问题。 第二个问题可以通过使用具体类将实现的接口来解决客户端将始终指向该接口类而不是具体类。 因此以这种方式客户将完全不知道所需的各种类型的具体类。 什么是接口 Java中的接口是没有实现的方法定义的集合。 实现接口的类必须提供实现并且必须实现接口中描述的所有方法。 该接口是一个契约它告诉类要做什么让类决定如何实现它们。 interface Bounceable {void setBounce();
} 下面的类图将全面概述Factory Pattern的实现 工厂模式类图 让我们看一下实现工厂模式的示例代码 GarmentType.java public interface GarmentType {String print();
} Trouser.java public class Trouser implements GarmentType {Overridepublic String print() {System.out.println(Trouser Created);return Trouser;}} Shirt.java public class Shirt implements GarmentType {Overridepublic String print() {System.out.println(Shirt Created);return Shirt;}
} GarmentFactory.java public class GarmentFactory {public static GarmentType createGarments(String selection) {if (selection.equalsIgnoreCase(Trouser)) {return new Trouser();} else if (selection.equalsIgnoreCase(Shirt)) {return new Shirt();}throw new IllegalArgumentException(Selection doesnot exist);}
} 客户端程序 public class Client {public static void main(String[] args) {System.out.println(Enter your selection:);BufferedReader br new BufferedReader(new InputStreamReader(System.in));String selection null;try {selection br.readLine();} catch (IOException e) {e.printStackTrace();}GarmentType objGarmentType GarmentFactory.createGarments(selection);System.out.println(objGarmentType.print());}
} 工厂模式的优势 a此客户端不需要了解需要创建的对象的子类。 它需要引用接口和工厂对象。 b对象创建过程从客户端带到工厂从而使客户端代码与对象创建代码脱钩。 反过来这将有助于重用因为此代码可被其他客户端使用。 c工厂模式还有助于提高应用程序的可伸缩性因为客户端代码仅引用接口我们可以添加更多实现该接口的产品而无需在客户端代码中进行很多更改。 d如果应用程序使用Factory模式因为对象创建是集中的则代码可维护性将是有益的。 参考 通过 Idiotechie博客上的JCG合作伙伴 Mainak Goswami 使用Factory Pattern解决设计问题 。 翻译自: https://www.javacodegeeks.com/2012/07/solve-design-problems-using-factory.html工厂设计模式解决什么问题