[设计模式]静态代理

一、概念解释

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

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

二、代理的优点

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

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

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("送个包装袋给包起来");
    }
}

 

输出结果:


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

 

posted on 2019-02-24 23:40  郑晓龙  阅读(119)  评论(0编辑  收藏  举报

导航