一.简介
适配器模式:适配器模式(英语:adapter pattern)有时候也称包装样式或者包装。将一个类的接口转接成用户所期待的。一个适配使得因接口不兼容而不能在一块儿工做的类工做在一块儿,作法是将类本身的接口包裹在一个已存在的类中。
代理模式:为其余对象提供一种代理以控制对这个对象的访问。在某些状况下,一个对象不适合或者不能直接引用另外一个对象,而代理对象能够在客户端和目标对象之间起到中介的做用。java
二.困惑
设计模式老是经过增长层来进行解耦合,提升扩展性,可是若是咱们无法从在这个抽象维度中看出,这个层真正的抽象含义,那么咱们很难搞懂一个模式真正的内涵?我就有这个疑问,这两个东东都是增长了一层,可是这一层有什么区别?设计模式
三.理解
很明显,适配器模式是由于新旧接口不一致致使出现了客户端没法获得知足的问题,可是,因为旧的接口是不能被彻底重构掉的,由于咱们还想使用实现了这个接口的一些服务。那么为了使用之前实现旧接口的服务,咱们就应该把新的接口转换成旧接口;实现这个转换的类就是抽象意义的转换器。
就好比在java中早期的枚举接口是Enumeration然后定义的枚举接口是Iterator;有不少旧的类实现了enumeration接口暴露出了一些服务,可是这些服务咱们如今想经过传入Iterator接口而不是Enumeration接口来调用,这时就须要一个适配器,那么client就能用这个服务了(服务端只想用Iterator或者只知道这个接口)。
相比于适配器的应用场景,代理就不同了,虽然代理也一样是增长了一层,可是,代理提供的接口和本来的接口是同样的,代理模式的做用是不把实现直接暴露给client,而是经过代理这个层,代理可以作一些处理。spa