將一個(gè)類的接口轉(zhuǎn)換成我們希望的另外一個(gè)接口上煤,
下面是代理模式
為其他對(duì)象提供一種代理以控制對(duì)這個(gè)對(duì)象的訪問
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();
}
}
/**
* 代理模式
* 通過(guò)接口 讓代理和real都具有相同的方法
*/
RealSubject realSubject = new RealSubject();
Proxy proxy = new Proxy(realSubject);
proxy.logn();、
}
代理模式 在proxy中引用了 真實(shí)對(duì)象
代理模式和適配器模式比較 個(gè)人觀點(diǎn): 用法寫法上差不多。
區(qū)別 - 1代理是實(shí)現(xiàn)共同的接口诬辈,并且在proxy中有real的引用
- 2適配器中 適配器主要就是連接作用昆咽。他可以實(shí)現(xiàn)或者繼承客戶所期待而創(chuàng)建的接口金踪,而被適配的角色也是在適配器中被引用捺氢,和代理模式一樣 ,并且適配和被適配的沒有共同接口或者繼承的抽象類把曼,所以兩個(gè)是可以獨(dú)立的對(duì)象杨帽,可以有不同的方法屬性行為。