将一个类的接口转换成我们希望的另外一个接口,
下面是代理模式
image.png为其他对象提供一种代理以控制对这个对象的访问
public interface LognSubject {
abstract void logn();
}
public class RealSubject implements LognSubject {
@Override
public void logn() {
Log.i("111","");
}
}
public class Proxy implements LognSubject {
LognSubject lognSubject ;
public Proxy(LognSubject lognSubject) {
this.lognSubject = lognSubject;
}
@Override
public void logn() {
if(lognSubject==null){
lognSubject.logn();
}else{
lognSubject.logn();
}
}
/**
* 代理模式
* 通过接口 让代理和real都具有相同的方法
*/
RealSubject realSubject = new RealSubject();
Proxy proxy = new Proxy(realSubject);
proxy.logn();、
}
代理模式 在proxy中引用了 真实对象
代理模式和适配器模式比较 个人观点: 用法写法上差不多。
区别 - 1代理是实现共同的接口,并且在proxy中有real的引用
- 2适配器中 适配器主要就是连接作用。他可以实现或者继承客户所期待而创建的接口,而被适配的角色也是在适配器中被引用,和代理模式一样 ,并且适配和被适配的没有共同接口或者继承的抽象类,所以两个是可以独立的对象,可以有不同的方法属性行为。
网友评论