设计模式的区别

简单代理模式策略模式在功能上的很大的区别是:

简单代理模式中,代理类知道被代理类的行为,因为代理类与被代理类实现的是同一个接口,因此代理类与被代理类的结构是相同的;

而策略模式中,策略容器并不知道内部策略的详细信息,因为容器并没有实现与内部策略相同的接口,即容器与内部策略只是简单的组合关系,容器只是将内部策略的行为抽取出来,进行了统一的实现。策略模式仅仅封装算法(包括添加 & 删除),但策略模式并不决定在何时使用何种算法,算法的选择由客户端来决定。

策略模式vs工厂模式的区别:

策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。

策略模式让算法独立于使用它的客户而独立变化。

在软件开发中也常常遇到类似的情况,实现某一个功能有多种算法或者策略,我们可以根据环境或者条件的不同选择不同的算法或者策略来完成该功能。如查找、排序等,一种常用的方法是硬编码(Hard Coding)在一个类中,如需要提供多种查找算法,可以将这些算法写到一个类中,在该类中提供多个方法,每一个方法对应一个具体的查找算法;当然也可以将这些查找算法封装在一个统一的方法中,通过if…else…或者case等条件判断语句来进行选择。这两种实现方法我们都可以称之为硬编码,如果需要增加一种新的查找算法,需要修改封装算法类的源代码;更换查找算法,也需要修改客户端调用代码。在这个算法类中封装了大量查找算法,该类代码将较复杂,维护较为困难。如果我们将这些策略包含在客户端,这种做法更不可取,将导致客户端程序庞大而且难以维护,如果存在大量可供选择的算法时问题将变得更加严重。

1. 相似:

    在模式结构上,两者很相似;

2.差别:

  • 用途不一样 

  • 工厂是创建型模式,它的作用就是创建对象; 

  • 策略是行为型模式,它的作用是让一个对象在许多行为中选择一种行为;
    • 关注点不一样 


    • 一个关注对象创建 


    • 一个关注行为的封装

    • 解决不同的问题 


    • 工厂模式是创建型的设计模式,它接受指令,创建出符合要求的实例;它主要解决的是资源的统一分发,将对象的创建完全独立出来,让对象的创建和具体的使用客户无关。主要应用在多数据库选择,类库文件加载等。

    •  
      策略模式是为了解决的是策略的切换与扩展,更简洁的说是定义策略族,分别封装起来,让他们之间可以相互替换,策略模式让策略的变化独立于使用策略的客户。

    • 工厂相当于黑盒子,策略相当于白盒子;

适配器模式,装饰模式,代理模式异同:

一、概念

适配器模式,允许因为接口不兼容而不能在一起工作的类工作在一起,做法是将类自己的接口包裹在一个已存在的类中。
装饰器模式,原有的不能满足现有的需求,对原有的进行增强。
代理模式,同一个类而去调用另一个类的方法,不对这个方法进行直接操作。

适配器的特点在于兼容,从代码上的特点来说,适配类与原有的类具有相同的接口,并且持有新的目标对象。就如同一个三孔转2孔的适配器一样,他有三孔的插头,可以插到三孔插座里,又有两孔的插座可以被2孔插头插入。适配器模式是在于对原有3孔的改造。在使用适配器模式的时候,我们必须同时持有原对象,适配对象,目标对象。。。。

装饰器模式特点在于增强,他的特点是被装饰类和所有的装饰类必须实现同一个接口,而且必须持有被装饰的对象,可以无限装饰。

代理模式的特点在于隔离,隔离调用类和被调用类的关系,通过一个代理类去调用。

总的来说就是如下三句话:

  • 适配器模式是将一个类(a)通过某种方式转换成另一个类(b).
  • 装饰模式是在一个原有类(a)的基础之上增加了某些新的功能变成另一个类(b).
  • 代理模式是将一个类(a)转换成具体的操作类(b).


猜你喜欢

转载自www.cnblogs.com/imqsl/p/9540796.html