摘要:本文主要向大家介绍了JAVA语言设计模式入门学习之代理模式实例讲解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
本文主要向大家介绍了JAVA语言设计模式入门学习之代理模式实例讲解,通过具体的内容向大家展示,希望对大家学习JAVA语言有所帮助。
代理模式;给某个对象提供一个代理对象,由代理对象持有对原对象的引用。
代理模式就比较符合中国人含蓄的性格,假如有个姑娘想要找个对象,但是直接满大街去喊我要找对象的不是很多吧。大部分的女孩还是倾向于先去找一个媒人,让媒人来给自己介绍对象。这里的媒人其实就是女孩的代理对象了。
先来看一下类图:
我们可以看到女孩跟媒人都实现了一个相亲的接口,然后呢媒人持有女孩的引用来调用女孩展示自己的方法,代码是这样的:
public interface BlindDate { public void show();} public class Girl implements BlindDate { @Override public void show() { System.out.println("女孩展示自己"); }} public class MatchMaker implements BlindDate { BlindDate bd; MatchMaker(BlindDate bd){ this.bd=bd; } @Override public void show() { System.out.println("媒人牵线搭桥"); bd.show(); System.out.println("媒人收取中介费"); }}
上方这种写法确实实现了代理模式,但是细心的你可能会发现,这不符合逻辑呀,媒人怎么能也有show方法呢,她是代理,没必要搞得跟女孩一样吧,所以呢又出现了下方的实现方式
代码实现:
public class DynamicMatchMaker { private Object girl; DynamicMatchMaker(Object girl) { this.girl = girl; } public Object getProxy() { return Proxy.newProxyInstance( girl.getClass().getClassLoader(), girl.getClass().getInterfaces(), new InvocationHandler() { @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("媒人牵线搭桥"); Object returnValue = method.invoke(girl, args); System.out.println("媒人收取中介费"); return returnValue; } }); }}
这种实现看来其实还是可以的哈,满符合逻辑的,相当于找媒人获得了女孩的联系方式
学习更多设计模式请参考:入门设计模式之汇总篇
代理模式;给某个对象提供一个代理对象,由代理对象持有对原对象的引用。
代理模式就比较符合中国人含蓄的性格,假如有个姑娘想要找个对象,但是直接满大街去喊我要找对象的不是很多吧。大部分的女孩还是倾向于先去找一个媒人,让媒人来给自己介绍对象。这里的媒人其实就是女孩的代理对象了。
先来看一下类图:
我们可以看到女孩跟媒人都实现了一个相亲的接口,然后呢媒人持有女孩的引用来调用女孩展示自己的方法,代码是这样的:
public interface BlindDate { public void show();} public class Girl implements BlindDate { @Override public void show() { System.out.println("女孩展示自己"); }} public class MatchMaker implements BlindDate { BlindDate bd; MatchMaker(BlindDate bd){ this.bd=bd; } @Override public void show() { System.out.println("媒人牵线搭桥"); bd.show(); System.out.println("媒人收取中介费"); }}
上方这种写法确实实现了代理模式,但是细心的你可能会发现,这不符合逻辑呀,媒人怎么能也有show方法呢,她是代理,没必要搞得跟女孩一样吧,所以呢又出现了下方的实现方式
代码实现:
public class DynamicMatchMaker { private Object girl; DynamicMatchMaker(Object girl) { this.girl = girl; } public Object getProxy() { return Proxy.newProxyInstance( girl.getClass().getClassLoader(), girl.getClass().getInterfaces(), new InvocationHandler() { @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { System.out.println("媒人牵线搭桥"); Object returnValue = method.invoke(girl, args); System.out.println("媒人收取中介费"); return returnValue; } }); }}
这种实现看来其实还是可以的哈,满符合逻辑的,相当于找媒人获得了女孩的联系方式
本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注编程语言JAVA频道!
您输入的评论内容中包含违禁敏感词
我知道了
请输入正确的手机号码
请输入正确的验证码
您今天的短信下发次数太多了,明天再试试吧!
我们会在第一时间安排职业规划师联系您!
您也可以联系我们的职业规划师咨询:
版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
沪公网安备 31011502005948号