前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >设计模式之-代理模式

设计模式之-代理模式

作者头像
一个程序员的成长
发布2020-11-25 15:23:06
2410
发布2020-11-25 15:23:06
举报
文章被收录于专栏:bingfeng-技术bingfeng-技术

阅读本文大概需要3分钟

一、什么是代理模式

代理模式:为其他对象提供一种代理以控制对这个对象的访问。简单来说这就是给目标对象生成一个代理对象,并由代理对象控制对目标对象的引用。

我们来看下装饰者模式的UML图:

二、代理模式的构成

  • Subject(抽象主题角色):它声明了真实主题和代理主题的共同接口;
  • Proxy(代理主题角色):实现了抽象主题,它拥有对真实主题的引用,这样它就可以操作真实的主题对象;
  • RealSubject(真实主题角色):实现了抽象主题,里面实现了具体的业务操作;

三、实例演示

我们来写一个简单的Demo,我们就以代购化妆品为例写一个例子。

创建一个化妆品的接口

代码语言:javascript
复制
public interface Cosmetics {

    void BuyCosmetics();
}

创建一个真实的主题

代码语言:javascript
复制
public class Me implements Cosmetics{

    @Override
    public void BuyCosmetics() {
        System.out.println("我想买韩国的韩妆品,但是我没法出国怎么办?");
    }
}

代理主题角色

代码语言:javascript
复制
public class Proxy implements Cosmetics {

    private Me me;

    @Override
    public void BuyCosmetics() {

        if (me == null) {
            me = new Me();
        }

        me.BuyCosmetics();
        // 代理增强的方法
        proxys();
    }

    public void proxys() {

        System.out.println("我去帮你买吧!");
    }
}

来写一下测试类

代码语言:javascript
复制
public class Test {

    public static void main(String[] args) {

        Proxy proxy = new Proxy();

        proxy.BuyCosmetics();
    }
}

结果

四、模式总结

通过上面的介绍我们对代理模式有了一个简单的了解,那么你可能享问代理模式有哪些实际的应用呢?其实我们每天使用电脑就无时无地的在使用代理模式,我们有很多的电脑应用,问了更方便快捷的打开应用,一般都会发送一个快捷方式到桌面,那么这个快捷方式就是一个典型的代理模式。

那么你还知道其他典型的代理模式嘛?

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-11-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 一个程序员的成长 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档