设计模式之代理模式

模式定义:

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


模式结构
代码模式.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、保护代理:用来控制对真实对象的访问权限

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值