一、定义
代理模式(Proxy):为其他对象提供一种代理以控制对这个对象的访问。
适配器模式(Adapter):将一个类的接口转换成客户希望的另外一个接口,使得原本接口不兼容而不能一起工作的那些类可以一起工作。
二、理解
代理模式和适配器模式应该说很相像,但是他们的区别也很明显,代理模式和被代理者的接口是同一个,只是使用中客户访问不到被代理者,所以利用代理间接的访问,而适配器模式,是因为接口不同,为了让用户使用到统一的接口,把原先的对象通过适配器让用户统一的使用,大多数运用在代码维护的后期,或者借用第三方库的情况下
三、类图
代理模式
适配器模式
四、Code
代理模式,代理者保存一个被代理的一个对象;适配器模式,保存了一个被适配的对象
适配器:
public class Person {private String name;
private String sex;
private int age;
public void speakJapanese(){
System.out.println("I can speak Japanese!");
}
public void speakEnglish(){
System.out.println("I can speak English!");
}
...//以下省略成员变量的get和set方法
}
public interface Job {
public abstract void speakJapanese();
public abstract void speakEnglish();
public abstract void speakFrench();
}
public class Adapter extends Person implements Job{
public void speakFrench() {
}
}
代理:
public
interface
KindWomen {
//这种类型的女人能做什么事情呢?
public
void
makeEyesWithMan();
//抛媚眼
public
void
happyWithMan();
//happy what? You know that!
}