Java中23种设计模式—(关于接口的)代理设计模式

Java中23种设计模式—(关于接口的)代理设计模式,第1张

Java中23种设计模式—(关于接口的)代理设计模式 代理模式(Proxy):

为其他对象提供一个代理以控制对这个对象的访问

举例

类比代购

顾客真正付款的人代购者帮忙买东西,解决我们无法现场买的问题(辅助解决真实问题)

注意:

1.在物品成交前,买家不知道是哪个代购帮买,代购也不知道具体帮谁买。所以这块用的是接口,而不是具体子类。

private  ISubject realSubject

2.需要的东西:

1)业务接口ISubject:需要干的事-即要买的东西(假如买电脑)-买电脑是核心业务

2)真实业务类:真正付款买东西的买家

3)代理类:辅助我们买东西,有辅助 *** 作-如买东西前后干的事

4)平台:通过平台Platform,将代理人与客户产生联系

5)业务:取得一个业务对象-平台下单

代码实现:

interface ISubject{
    void buyComputer();
}

class RealSubject implements ISubject{
    @Override
    public void buyComputer() {
        System.out.println("买个  mac  pro  15寸顶配电脑");
    }
}

class ProxySubject implements ISubject{
    private ISubject realSubject;//真正成交前,买电脑的人也不知道具体哪个代购帮买,代购也不知道具体要帮谁买,所以这块用的是接口,而不是具体哪个子类
    //通过构造方法把真实业务传进来
    public ProxySubject(ISubject realSubject) {
        this.realSubject = realSubject;
    }
    public void preHandle(){
        System.out.println("买票去某地看好电脑");
    }
    @Override
    public void buyComputer() {
        //调用买前 *** 作
        preHandle();
        //付钱这个 *** 作是通过真实业务处理的-真实的付钱人付钱
        this.realSubject.buyComputer();
        //调用买后 *** 作
        postHandle();
    }
    public void postHandle(){
        System.out.println("再买票把电脑带回来");
    }
}

class Platform{
    //获取
    public static ISubject getInstance() {
        return new ProxySubject(new RealSubject());//在代购平台上下单
    }
}

public class Subject {
    public static void main(String[] args) {
        ISubject subject=Platform.getInstance();//取得一个业务的对象
        subject.buyComputer();
    }
}
总结

代理模式是基于接口的,一个接口实现两个类,一个是真实业务类,另一个是辅助真实业务的代理类,最终将真实业务传递给代理类来完成整个业务的实现。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5703584.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存