栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

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

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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();
    }
}
总结

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

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/705017.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号