设计模式之代理模式

来源:互联网 发布:开淘宝店方案 编辑:程序博客网 时间:2024/06/05 02:57
模式定义:

代理模式就是给一个对象提供一个代理,并由代理对象控制对原对象的引用


模式结构
代码模式.png

不画图了,就是 一个接口,两个实现A,B。A是代理证,B是真正实现,,A内有一个B的引用。在调用A时,其实是调用B。和适配器模式差不多,只不过这个父类相同。



模式实现
public class ProxyPattern {    @Test    public void testProxy() {        Proxy proxy = new Proxy();        proxy.sell("lv");        proxy.sell("gun");        proxy.sell("iPhone8");    }    /**     * 商家接口     */    interface ISeller {        void sell(String name);    }    /**     * 香港某个商城     */    class HongKong implements ISeller {        @Override        public void sell(String name) {            System.out.println("sell " + name);        }    }    /**     * 代购     */    class Proxy implements ISeller {        private ISeller iSeller;        public Proxy() {            iSeller = new HongKong();        }        @Override        public void sell(String name) {            if ("iPhone8".equals(name)) {                System.out.println("no this");            } else if ("gun".equals(name)) {                System.out.println("no permission");            } else {                iSeller.sell(name);            }        }    }}





模式优点:

1、代理模式能够协调调用者和被调用者,在一定程度上降低了系统的耦合度
2、代理对象可以在客户端和目标对象之间起到中介的作用,起到了保护目标对象的作用


模式缺点:

1、由于在客户端和真实主题之间增加了代理对象,因此有些类型的代理模式可能会造成请求的处理速度变慢
2、实现代理模式需要额外的工作,有些代理模式的实现非常复杂

适用场景:

1、远程代理:为一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实
2、虚拟代理:通过使用过一个小的对象代理一个大对象。这样就可以减少系统的开销
3、保护代理:用来控制对真实对象的访问权限

原创粉丝点击