代理模式之静态代理模式

特点:

两个子类共同实现一个接口,其中一个子类负责真实的业务实现,另外一个子类完成辅助真实业务主题的操作。

interface ISubject {
    public void buyLipstick();// 核心功能是买口红
}

class RelSubject implements ISubject {//真实类,也就是客户
    public void buyLipstick() {
        System.out.println("买一支MAC口红");
    }
}

class ProxySubject implements ISubject {//辅助类,也就是代理类
    private ISubject subject;

    /**
     * 这里为什么返回类型是ISubject?
     * 代理要为许多用户买口红,而不是某一个用户,所以此处不能为RelSubject
     */
    public ProxySubject(ISubject subject) {
        this.subject = subject;
    }

    public void brforeBuyLipstick() {
        System.out.println("取钱,排队");
    }

    public void afterBuyLipstick() {
        System.out.println("邮寄,收钱");
    }

    public void buyLipstick() {
        this.brforeBuyLipstick();
        this.subject.buyLipstick();
        this.afterBuyLipstick();
    }
}

public class Test {
    public static void main(String[] args) {
        ISubject isubject = new RelSubject();
        isubject.buyLipstick();
    }
}

本质:所有真实业务操作都会有一个与之辅助的工具类(功能类)共同完成。

猜你喜欢

转载自blog.csdn.net/weixin_40995778/article/details/83421957
今日推荐