[设计模式]静态代理

Posted zhengxl5566

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[设计模式]静态代理相关的知识,希望对你有一定的参考价值。

一、概念解释

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

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

二、代理的优点

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

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

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

 

输出结果:


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

 

以上是关于[设计模式]静态代理的主要内容,如果未能解决你的问题,请参考以下文章

代理模式之静态代理实现代码

设计模式代理模式 ( 静态代理 )

Spring之代理模式

静态代理模式代码演示

[设计模式]静态代理

设计模式—静态代理模式(聚合与继承方式比较)