[设计模式]静态代理
一、概念解释
静态代理,是一种设计模式(写代码的套路)。所谓静态,是指代码写死的,不可变的。所谓代理就是替别人干。比如,酒厂和酒水代理商,都是为了卖酒,酒厂批发给代理商(卖酒),代理商卖给酒鬼(卖酒)。
那么问题来了,既然酒厂也能卖酒,为什么还要搞代理呢?搞这些套路有啥用?
二、代理的优点
酒厂从原料采购,到生产加工,再到产品销售,环节众多,如果全都让它自己搞,显然需要耗费很大的精力去管理,不如把他们拆分开,让专业的人做专业的事,自己定个批发价给代理商,至于他们怎么卖,那就是八仙过海各显神通了
接下来将酒水代理的例子转换成代码,参考如下:
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("送个包装袋给包起来"); } }
输出结果:
代理商加价
卖酒。。。
送个包装袋给包起来