java设计模式---代理模式

代理模式

代理模式有两个概念:代理者和被代理者,代理者要想在人前为被代理者处理各种事情,那么代理者就必须知道被代理者能够干什么。
代理者和被代理者其实是具有相同的功能的,只不过是代理在表面周旋,被代理者实际操作,那么用我们java来说要实现两者具有相同的功能,那么代理者和被代理者两个对象(Object)就是实现想通过的接口(interface)。

我现在用一个形象生动地来列子来描述一下代码模式,相信看过古装电视剧的同学们都知道里面少不有一个地方那就怡红院,里面有一个老鸨(代理者)、苏小小(被代理者)、陈圆圆(被代理者)、客官(调用代理者Object)。

  • IWomanProxy.java[代理者和被代理者公共接口]

    /**
    *定义了一个怡红院女人做事的接口
    */
    public interface IWomanProxy{
        public viod drinking();//陪喝
        public void play();//陪玩
    }
    
  • SuWomanProxy.java[苏小小的实现类]

    public class SuWomanProxy{
        public void drinking(){
            system.out.printf("this is Suxiaoxiao dirnking method");
        }
        public void play(){
            system.out.printf("this is Suxiaoxiao play mehtod");
        }
    }
    
  • ChenWomanProxy.java[陈圆圆的实现类]

    public class SuWomanProxy{
        public void drinking(){
            system.out.printf("this is Chenyuayuan dirnking method");
        }
        public void play(){
            system.out.printf("this is Chenyuayuan play mehtod");
        }
    }
    

….

  • MaWomanProxy[老鸨的实现类]

    public class MaWomanProxy{
        private IWomanProxy womanProxy;
        public MaWomanProxy(){
        this.womanProxy=new ChenyuanyuanWomanProxy();//陈圆圆是头牌,首先做她的代理
        }
        public MaWomanProxy(IWomanProxy iWomanProxy){
            this.womanProxy=iWomanProxy;
        }
        //老鸨说可观进来我陪你喝几杯呀,其实真正喝的是陈圆圆或者苏小小,你也不愿意找老鸨啊,呵呵~~
        public void drinking(){
            this.womanProxy.drinking();
        }
        public void play(){
            this.womanProxy.play();
        }
    }
    
  • Man.java[客官]

    public class Man{
        public static void main (String[] args){
        //乡下客官一进城,就老鸨来陪喝酒,陪玩
            MaWomanProxy mama=MaWomanProxy();//默认代理
            mama.drinking();
            mama.play();
            MaWomanProxy mama2=MaWomanProxy(new SuWomanProxy);//客官就是喜欢苏小小,老鸨也乐意
            mama2.drinking();
            mama2.play();
    
        }
    }
    

以上例子应该可以体现代理模式的意思吧,呵呵,写得不好还请见谅~~~~

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值