zoukankan      html  css  js  c++  java
  • 秒懂设计模式--代理模式(proxy)

    有两种,静态代理和动态代理。先说静态代理,很多理论性的东西我不讲,我就算讲了,你们也看不懂。什么真实角色,抽象角色,代理角色,委托角色。。。乱七八糟的,我是看不懂。之前学代理模式的时候,去网上翻一下,资料一大堆,打开链接一看,基本上都是给你分析有什么什么角色,理论一大堆,看起来很费劲,不信的话你们可以去看看,我是看不懂他们在说什么。咱不来虚的,直接用生活中的例子说话。(注意:我这里并不是否定理论知识,我只是觉得有时候理论知识晦涩难懂,喜欢挑刺的人一边去,你是来学习知识的,不是来挑刺的)
    到了一定的年龄,我们就要结婚,结婚是一件很麻烦的事情,(包括那些被父母催婚的)。有钱的家庭可能会找司仪来主持婚礼,显得热闹,洋气~好了,现在婚庆公司的生意来了,我们只需要给钱,婚庆公司就会帮我们安排一整套结婚的流程。整个流程大概是这样的:家里人催婚->男女双方家庭商定结婚的黄道即日->找一家靠谱的婚庆公司->在约定的时间举行结婚仪式->结婚完毕
    婚庆公司打算怎么安排婚礼的节目,在婚礼完毕以后婚庆公司会做什么,我们一概不知。。。别担心,不是黑中介,我们只要把钱给人家,人家会把事情给我们做好。所以,这里的婚庆公司相当于代理角色,现在明白什么是代理角色了吧。

    代码实现请看:

    //代理接口
    public interface ProxyInterface {
    //需要代理的是结婚这件事,如果还有其他事情需要代理,比如吃饭睡觉上厕所,也可以写
    void marry();
    //代理吃饭(自己的饭,让别人吃去吧)
    //void eat();
    //代理拉屎,自己的屎,让别人拉去吧
    //void shit();
    }

    文明社会,代理吃饭,代理拉屎什么的我就不写了,有伤社会风化~~~能明白就好

    好了,我们看看婚庆公司的代码:

    public class WeddingCompany implements ProxyInterface {

    private ProxyInterface proxyInterface;

    public WeddingCompany(ProxyInterface proxyInterface) {
     this.proxyInterface = proxyInterface;
    }

    @Override
    public void marry() {
     System.out.println("我们是婚庆公司的");
     System.out.println("我们在做结婚前的准备工作");
     System.out.println("节目彩排...");
     System.out.println("礼物购买...");
     System.out.println("工作人员分工...");
     System.out.println("可以开始结婚了");
     proxyInterface.marry();
     System.out.println("结婚完毕,我们需要做后续处理,你们可以回家了,其余的事情我们公司来做");
    }

    }

    看到没有,婚庆公司需要做的事情很多,我们再看看结婚家庭的代码:

    public class NormalHome implements ProxyInterface{

    @Override
    public void marry() {
     System.out.println("我们结婚啦~");
    }

    }

    这个已经很明显了,结婚家庭只需要结婚,而婚庆公司要包揽一切,前前后后的事情都是婚庆公司来做,听说现在婚庆公司很赚钱的,这就是原因,干的活多,能不赚钱吗?

    来看看测试类代码:

    public class Test {
    public static void main(String[] args) {
     ProxyInterface proxyInterface = new WeddingCompany(new NormalHome());
     proxyInterface.marry();
    }
    }



    运行结果如下:

  • 相关阅读:
    2020 Java开发者数据分析:中国已成为 Java 第一大国
    居然仅用浏览器,就完成了Spring Boot应用的开发与部署!
    Serverless 初体验:快速开发与部署一个Hello World(Java版)
    聊聊算法——回文字符串
    Redis Lua脚本完全入门
    Mock测试你的Spring MVC接口
    HTTPS证书知识扫盲
    Java中类型判断的几种方式
    山寨一个Spring的@Component注解
    如何自动填充SQL语句中的公共字段
  • 原文地址:https://www.cnblogs.com/wuwuyong/p/12470270.html
Copyright © 2011-2022 走看看