1. 程式人生 > >Java學習——代理模式

Java學習——代理模式

代理模式

特點:兩個子類共同實現同一個介面,其中一個子類負責真實業務實現,另一個子類完成輔助真實業務主題的操作

玩遊戲——介面

真實主題類——自己

代理類——代練

 

買口紅——介面

真實主題類——自己

代理類——代購

一個簡單的代理模式

interface ISubject{
    void buyLipstick();
}
class realSubject implements ISubject{
    @Override
    public void buyLipstick() {
        System.out.println("買口紅");
    }
}
class proxySubject implements ISubject{
    //代理需要知道真實客戶
    //意思是我不知道具體的客戶是誰
    //但是找我的人一定是買口紅
    private ISubject realSubject;
    public proxySubject(ISubject  realSubject){
        this.realSubject = realSubject;
    }
    public void beforeBuylipstick(){
        System.out.println("取錢、排隊");
    }
    public void afterBuylipstick(){
        System.out.println("送貨");
    }
    @Override
    public void buyLipstick() {
        beforeBuylipstick();
        realSubject.buyLipstick();
        afterBuylipstick();
    }
}
public class Test {
    public static void main(String[] args) {
        proxySubject proxySubject = new proxySubject(new realSubject());
        proxySubject.buyLipstick();
    }
}
/**輸出
 取錢、排隊
 買口紅
 送貨
*/

代理模式的本質:所有的真實業務操作都會有一個與之輔助的工具類(功能類)共同完成。