设计模式-创建型模式的优缺点比较

设计模式-创建型模式的优缺点比较

ID:32394604

大小:49.97 KB

页数:4页

时间:2019-02-04

设计模式-创建型模式的优缺点比较_第1页
设计模式-创建型模式的优缺点比较_第2页
设计模式-创建型模式的优缺点比较_第3页
设计模式-创建型模式的优缺点比较_第4页
资源描述:

《设计模式-创建型模式的优缺点比较》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、比较几种创建型模式的优缺点,仔细考察这几种模式的区别和相关性。第一类是工厂模式,工厂模式专门负责将大量有共同接口的类实例化。工厂模式可以动态决定将哪一个类实例化,不必事先知道每次要实例化哪一个类。工厂模式有三种形态:简单工厂模式;工厂方法模式;抽象工厂模式是。前两者是类的创建模式,后者是对象的创建模式。简单工厂:简单工厂模式是由一个工厂类根据传入的参量决定创建出哪一种产品类的实例,涉及工厂角色(Creator)、抽象产品(Product)角色及具体产品(ConcreteProduct)角色等三个角色。优点:模式的核心是工厂类,该类中含有必要的判断逻辑,可以决定在什么时候创建哪一个产品类的

2、实例,客户端可以免除直接创建产品对象的责任,而仅仅负责“消费”产品。简单工厂模式实现了对责任的分割。缺点:当产品类有复杂的多层次等级结构时,工厂类只有它自己。模式中工厂类集中了所有的产品创建逻辑,形成一个无所不知的全能类。将多个创建逻辑放在一个类中,当产品类有不同接口种类时,工厂类需要判断在什么时候创建某种产品,使得系统在将来进行功能扩展时较为困难。该模式采用静态方法作为工厂方法,而静态方法无法由子类继承,因此工厂角色无法形成基于继承的等级结构。简单工厂模式只在有限的程度上符合“开-闭”原则。工厂方法:定义一个用于创建对象的接口,让子类决定实例化哪一个类。FactoryMethod使一个

3、类的实例化延迟到其子类。工厂方法模式是简单工厂模式的进一步抽象和推广,其基本思想是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类中。优点:多态性:客户代码可以做到与特定应用无关,适用于任何实体类子类可以重写新的实现,也可以继承父类的实现。加一层间接性,增加了灵活性。良好的封装性,代码结构清晰。扩展性好,在增加产品类的情况下,只需要适当修改具体的工厂类或扩展一个工厂类,就可“拥抱变化”屏蔽产品类。产品类的实现如何变化,调用者都不需要关心,只需关心产品的接口,只要接口保持不变,系统中的上层模块就不会发生变化。典型的解耦框架。高层模块只需要知道产品的抽象类,其他的实现类都不需要关心,

4、符合迪米特法则,符合依赖倒置原则,符合里氏替换原则。缺点:需要Creator和相应的子类作为工厂方法的载体,如果应用模型确实需要creator和子类存在,则很好;否则的话,需要增加一个类层次。抽象工厂:提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类,客户端不必指定产品的具体类型,创建多个产品族中的产品对象。优点:分离了具体的类,一个工厂封装创建产品对象的责任和过程,它将客户与类的实现分离易于交换产品系列,只需改变具体的工厂就可以使用不同的产品配置。有利于产品的一致性,当一个系列中的产品对象被设计成一起工作时,一个应用一次只能使用同一个系列中的对象。缺点:难以支持新的产

5、品等级结构,支持新的产品等级结构就要扩展抽象工厂接口。单例模式:一个类仅有一个实例,自行实例化并向整个系统提供一个访问它的全局访问点。确保一个类只能被实例化一次。优点:跨平台:使用合适的中间件,可以把singleton模式扩展为跨多个JVM和多个计算机工作。适用于任何类:只需把一个类的构造函数变成私有的,并且在其中增加相应的静态函数和变量,就可以把这个类变为singleton。可以通过派生创建:给定一个类,可以创建它的一个singleton子类。延迟求值:如果singleton从未使用过,那么就绝不会创建它。缺点:摧毁方法未定义:没有好的方法去摧毁一个singleton,或者解除其责任。

6、不能继承:从singleton派生的类并不是singleton。如果要使其成为singleton,必须要增加所需的静态函数和变量。效率问题:每次调用instance方法都会执行if语句,多余。不透明性:singleton的使用者知道它们正在使用一个singleton,因为它们必须要调用instance方法。建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造模式利用一个导演者对象和具体建造者对象一个一个地建造出所有的零件,从而建造出完整的对象。优点:建造模式的使用使得产品的内部表象可以独立地变化。使用建造模式可以使客户端不必知道产品内部组成的细节。每

7、一个Builder都相对独立,而与其他的Builder无关。模式所建造的最终产品更易于控制。缺点:建造者模式的“加工工艺”是暴露的,这样使得建造者模式更加灵活,也使得工艺变得对客户不透明。原型模式:用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。以一个已有的对象作为原型,通过它来创建新的对象。在增加新的对象的时候,新对象的细节创建工作由自己来负责,从而使新对象的创建过程与框架隔离开来。优点:原型模式允许动态地增加或减

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

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

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