Java设计模式-适配器模式,装饰模式,代理模式的异同

最近在学习Java的设计模式,推荐入门级的猿们阅读下《大话设计模式》这本书,语言通俗,简洁易懂。

到目前为止,遇到几种比较类似的设计模式,比如“策略模式(strategy)和状态模式”、代理(proxy)和适配器(adapter)模式等。
这篇文章特别把装饰器、代理和适配器这三种模式拿到这里特别拿出来做一下比较,顺便也是对学习的一个复习和总结了,文章参考了一些网上的资料。

首先肯定是基础概念必须了解了:

  • 适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作,做法是将类自己的接口包裹在一个已存在的类中;
  • 装饰模式(Decorator):动态地给一个对象添加一些额外的职责,就增加功能来说,装饰模式比生成子类更加灵活,实际目的是对原有的进行增强;
  • 代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问,同一个类而去调用另一个类的方法,不对这个方法进行直接操作。

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

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

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

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

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

摘自:

  • https://blog.csdn.net/lulei9876/article/details/39994825

你可能感兴趣的:(设计模式,设计模式)