前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >java设计模式---代理模式

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

作者头像
爱拼才会赢
发布2021-10-18 10:21:35
2620
发布2021-10-18 10:21:35
举报

代理模式

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

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

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

代码语言:javascript
复制
/**
*定义了一个怡红院女人做事的接口
*/
public interface IWomanProxy{
    public viod drinking();//陪喝
    public void play();//陪玩
}

SuWomanProxy.java[苏小小的实现类]

代码语言:javascript
复制
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[陈圆圆的实现类]

代码语言:javascript
复制
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[老鸨的实现类]

代码语言:javascript
复制
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[客官]

代码语言:javascript
复制
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();

    }
}

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

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2016-11-23 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 代理模式
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档