专栏首页bingfeng-技术设计模式之-代理模式

设计模式之-代理模式

阅读本文大概需要3分钟

一、什么是代理模式

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

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

二、代理模式的构成

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

三、实例演示

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

创建一个化妆品的接口

public interface Cosmetics {

    void BuyCosmetics();
}

创建一个真实的主题

public class Me implements Cosmetics{

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

代理主题角色

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("我去帮你买吧!");
    }
}

来写一下测试类

public class Test {

    public static void main(String[] args) {

        Proxy proxy = new Proxy();

        proxy.BuyCosmetics();
    }
}

结果

四、模式总结

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

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

本文分享自微信公众号 - 一个程序员的成长(xiaozaibuluo),作者:小涛

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-11-23

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 设计模式之 - 装饰者模式

    装饰着模式:简单的一句话理解就是,动态的给一个对象添加一些额外的功能,装饰者模式相对于生成子类更加的灵活。

    一个程序员的成长
  • RabbitMQ工作队列之公平分发消息与消息应答(ACK)

    上篇文章中,我们讲了工作队列轮询的分发模式,该模式无论有多少个消费者,不管每个消费者处理消息的效率,都会将所有消息平均的分发给每一个消费者,也就是说,大家最后各...

    一个程序员的成长
  • 设计模式之 - 简单工厂模式

    简单工厂模式(Simple Factory Pattern):又称为静态工厂方法(Static Factory Method)模式,它属于类创建型模式。在简单工...

    一个程序员的成长
  • Java 代理模式应用

    代理模式是一种效率非常高的模式,其定义如下:提供一种代理以控制对这个对象的访问。 代理模式也叫委托模式,它是一项基本设计技巧。许多其他的设计模式,如状态模...

    用户5166556
  • java | 什么是动态代理?

    最近在复习 Java 相关,回顾了下代理模式。代理模式在 Java 领域很多地方都有应用,它分为静态代理和动态代理,其中 Spring AOP 就是动态代理的典...

    一个优秀的废人
  • C# 事件(Event)

    事件(Event) 基本上说是一个用户操作,如按键、点击、鼠标移动等等,或者是一些出现,如系统生成的通知。应用程序需要在事件发生时响应事件。例如,中断。事件是用...

    庞小明
  • 仿网易新闻的顶部导航指示器

    版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/gdutxiaoxu/article/details...

    用户2965908
  • Android实现保持屏幕常亮功能

    笔者所在公司做的APP是股票类的,用户在查看股票报价页面的时候,往往需要开启盯盘模式,这个时候屏幕是不能黑屏的,黑屏会导致用户看不到一些关键报价涨跌,错过了买入...

    砸漏
  • 设计模式之代理模式

    爱撒谎的男孩
  • [译]C#8.0中一个使接口更加灵活的新特性-默认接口实现

    如果这个接口又在多个项目中使用了,那么进行更改将需要付出更多的精力,以确保它不会在其他地方运行失败。

    依乐祝

扫码关注云+社区

领取腾讯云代金券