代理模式
来源:互联网 发布:淘宝主播的东西可靠吗 编辑:程序博客网 时间:2024/04/30 09:15
定义:
为其他的对象提供一种代理,以控制这个对象的访问。
使用场景:
当无法直接访问某个对象的时候可以通过代理对象间接访问。
活在当下,直播离我们越来越近,网红也越来越多,能够认识的美女的机会也越来越多。一般有名气的网红
粉丝少说破万,多着上百万的粉丝订阅量。想近距离接触网红的人很多很多,然而不是所有的奶茶都叫优乐美,又
不是所有的人都可以认识主播、认识网红,你如果想要认识一些有知名度的网红(张琪格就成为魅族手机新闻发布
会做过推广),粉丝那么多,如果人人都想要和主播面基,那主播岂不是要疯掉(网红也不可能有那么多的时
间),于是经纪人便替主播审核资质(是否有足够的的money、是否足够的帅)。
简单实现:
/** * 委托 对象 * */public class Anchor implements Sudject{@Overridepublic void eat() {System.out.println(" 和 网红一起 吃饭 ");}@Overridepublic void play() {System.out.println(" 和网红一起 打游戏 ");}}
/** * 代理对象 * */public class Xiaoming implements Sudject{Anchor anchor; public Xiaoming(Anchor anchor) { this.anchor=anchor; }@Overridepublic void eat() {anchor.eat();}@Overridepublic void play() {anchor.play();}}
public interface Sudject {public void eat();//吃饭 public void play();//娱乐}
public class Main {public static void main(String[] args) {Anchor anchor=new Anchor();Xiaoming xiaoming=new Xiaoming(anchor);xiaoming.eat();xiaoming.play();}}
运行结果:
和 网红一起 吃饭
和网红一起 打游戏
和网红一起 打游戏
总结:
通过代码你应该也明白了 代理模式的使用,主要就是将真实对象的方法委托给代理对象(代理对象存在委托
类的实例)。
写到这里,你或许会发现这里存在的一个问题:代理类里面实现了委托了的实例,一个代理类为一个委托服
务,降低的程序的耦合性。如果网红要和别的屌丝面基得重新构造代理,增加了工作量。于是动态代理便产了。
用于解决代理与委托之间的一对多问题。
动态代理:
java提供一个便捷的动态代理接口(InvocationHandler),通过invoke方法调用具体的被代理方法。
代码示例:
/** * 委托 * */public class Anchor implements ISudject{@Overridepublic void Other() {System.out.println(" 一起 做 喜欢做的事情 ");}@Overridepublic void Singer() {System.out.println(" 一起 做 唱歌 ");}}
public interface ISudject {public void Other();public void Singer();}
/** * 动态代理 * */public class MProxy implements InvocationHandler{Object object;public Object GetInstance(Object object) { this.object = object; //取得代理对象 return Proxy.newProxyInstance(object.getClass().getClassLoader(), object.getClass().getInterfaces(), this); } @Overridepublic Object invoke(Object proxy, Method method, Object[] args) throws Throwable {// 得到被代理的 对象 Object result=method.invoke(object, args);return result;}}
public class Main {public static void main(String[] args) {MProxy proxy=new MProxy();ISudject anchor=(ISudject) proxy.GetInstance(new Anchor());anchor.Singer();anchor.Other();}}
运行结果就不展示了 ,如果你喜欢我的文章就请来一波关注吧。
0 0
- 代理模式--动态代理
- 代理模式-静态代理
- 代理模式-静态代理
- 代理模式 & 动态代理
- 代理模式--静态代理
- 代理模式--动态代理
- 代理模式(动态代理)
- 代理模式-动态代理
- 代理模式-动态代理
- 代理模式动态代理
- 代理模式-静态代理
- 代理模式-动态代理
- 代理模式 -动态代理
- 代理模式---动态代理
- 代理模式-动态代理
- 代理模式--静态代理
- 代理模式!
- 代理模式
- Python For Bioinformatics
- hibernate运用
- 白话经典算法系列之四 直接选择排序及交换二个数据的正确实现
- hibernate多对一...
- 行人检测论文笔记:Fast Feature Pyramids for Object Detection?
- 代理模式
- Linux进程描述符task_struct结构体详解--Linux进程的管理与调度
- hibernate零散知识点
- photoshop第十章:抠图技巧以及示例
- hibernate多对多
- jVMgc-6 吞吐量收集器
- JVM了解
- 大话数据结构读书笔记(五)-串
- set集合如何遍历
原创粉丝点击
热门IT博客
热门问题
老师的惩罚
人脸识别
我在镇武司摸鱼那些年
重生之率土为王
我在大康的咸鱼生活
盘龙之生命进化
天生仙种
凡人之先天五行
春回大明朝
姑娘不必设防,我是瞎子
京都自助游攻略网
广东七日游攻略
呼伦贝尔攻略
自由行泰国攻略
国外旅游攻略
东北自助游攻略
北京七日游攻略
春节自助游攻略
长城自助游攻略
国外自助游攻略
京都自由行攻略
郭亮村旅游攻略
牟尼沟旅游攻略
海洋公园攻略
欧洲六国游攻略
台北自助游攻略
秋季旅游攻略
去北京玩攻略
青藏旅游攻略
内蒙自助游攻略
欧洲自助游攻略
木格措游玩攻略
青木川旅游攻略
长沙自由行攻略
纳木错旅游攻略
去欧洲旅游攻略
东北旅游攻略
欧洲跟团游攻略
港澳自助游攻略
港澳旅行攻略
成都4日游攻略
月牙泉旅游攻略
广西游玩攻略
深圳七日游攻略
上海旅游全攻略
北京五日游攻略
罪恶都市攻略大全
然乌湖旅游攻略
袁家界旅游攻略
都江堰旅游攻略
洪崖洞攻略一日游