zoukankan      html  css  js  c++  java
  • [设计模式]静态代理

    一、概念解释

      静态代理,是一种设计模式(写代码的套路)。所谓静态,是指代码写死的,不可变的。所谓代理就是替别人干。比如,酒厂和酒水代理商,都是为了卖酒,酒厂批发给代理商(卖酒),代理商卖给酒鬼(卖酒)。

      那么问题来了,既然酒厂也能卖酒,为什么还要搞代理呢?搞这些套路有啥用?

    二、代理的优点

      酒厂从原料采购,到生产加工,再到产品销售,环节众多,如果全都让它自己搞,显然需要耗费很大的精力去管理,不如把他们拆分开,让专业的人做专业的事,自己定个批发价给代理商,至于他们怎么卖,那就是八仙过海各显神通了

      接下来将酒水代理的例子转换成代码,参考如下:

    public class StaticProxy {
        public static void main(String[] args) {
    
            Proxy proxy = new Proxy(new WineFactory());
            proxy.sell();
        }
    }
    
    interface ISell {
        void sell();
    }
    
    class WineFactory implements ISell {
    
        @Override
        public void sell() {
            System.out.println("卖酒。。。");
        }
    }
    
    class Proxy implements ISell {
    
        private WineFactory wineFactory;
    
        Proxy(WineFactory wineFactory) {
            this.wineFactory = wineFactory;
        }
    
        @Override
        public void sell() {
            //卖前加点业务
            System.out.println("代理商加价");
            wineFactory.sell();
            //卖后加点业务
            System.out.println("送个包装袋给包起来");
        }
    }

    输出结果:

    
    

    代理商加价
    卖酒。。。
    送个包装袋给包起来

  • 相关阅读:
    MyBatis的动态SQL语句这么厉害的!
    连接数据库,使用c3p0技术连接MySQL数据库
    Servlet 常见的乱码解决方案
    超级签具体实现
    Xcode报错You don’t have permission.
    SpringBoot+Mybatis整合实例
    恢复mysql数据库误删数据
    日期(date)运用座谈会
    程序猿日记--学习怎样学习
    服务器数据库密码忘记
  • 原文地址:https://www.cnblogs.com/zhengxl5566/p/10428720.html
Copyright © 2011-2022 走看看