Java代理模式
来源:互联网 发布:icloud照片怎么导入mac 编辑:程序博客网 时间:2024/06/05 11:19
Java代理模式:即Proxy Pattern,23种java常用设计模式之一。
1、什么是代理模式?
代理模式的作用是:为其他对象提供一种代理以控制对这个对象的访问。
2、策略模式有什么好处?
在某些情况下,一个客户不想或者不能直接引用另一个对象,而代理对象可以在客户端和目标对象之间起到中介的作用。
3、代理模式一般涉及到的角色有:
抽象角色:声明真实对象和代理对象的共同接口;
代理角色:代理对象角色内部含有对真实对象的引用,从而可以操作真实对象,同时代理对象提供与真实对象相同的接口以便在任何时刻都能代替真实对象。
同时,代理对象可以在执行真实对象操作时,附加其他的操作,相当于对真实对象进行封装。
真实角色:代理角色所代表的真实对象,是我们最终要引用的对象。
4、应用场景举例:
人物:潘金莲、王婆、西门庆、贾氏
项目结构如下:
(1).定义同一种类型的人——贪婪——KindWoman.java
package com.impl;public interface KindWoman {/* * 定义同一种类型(坏)女人:王婆和潘金莲都属于这个类型的女人 */ public void makemoney();//贪财}
(2).潘金莲实现了这种贪婪——PanJinLian.java
package com.dao;import com.impl.KindWoman;public class PanJinLian implements KindWoman {/* * 潘金莲:贪财 */public void makemoney() {// TODO Auto-generated method stubSystem.out.println("潘金莲贪图钱财!");}}
(3).王婆同样很贪婪——WangPo.java
package com.dao;import com.impl.KindWoman;public class WangPo implements KindWoman {/* * 王婆:贪婪的媒婆 */ private KindWoman kindWoman; public WangPo(){ //默认的话是潘金莲的代理this.kindWoman = new PanJinLian(); } //她可以是KindWomam的任何一个的代理,只要是这一类型 public WangPo(KindWoman kindWoman){ this.kindWoman = kindWoman; } public void makemoney() { this.kindWoman.makemoney();}}
(4).假设贾氏也是西门庆骗来的女人——贾氏同样贪婪——JiaShi.java
package com.dao;import com.impl.KindWoman;public class JiaShi implements KindWoman {/* * 賈氏:貪財 */public void makemoney() {// TODO Auto-generated method stubSystem.out.println("贾氏贪图钱财!");}}
(5).西门庆出场——XiMenQing.java
package com.test;import com.dao.JiaShi;import com.dao.WangPo;public class XiMenQing {public static void main(String[] args) {WangPo wangPo = new WangPo();//表面上是王婆贪财,其实还是潘金莲贪财wangPo.makemoney();JiaShi jiaShi = new JiaShi();wangPo = new WangPo(jiaShi);
//表面上是王婆贪财,其实还是潘金莲贪财
wangPo.makemoney();}}
(6).故事的结局——本质:
WangPo实现了对PanJinLian和JiaShi的makemoney()方法的贪财的功能,而WangPo,PanJinLian,JiaShi都实现了KindWoman接口,通过调用WangPo的makemoney()方法,我们可以实现对PanJinLian和JiaShi的makemoney()方法的贪财的功能,而不用在PanJinLian和JiaShi的makemoney()方法中作任何实现,这就是代理的作用。
代理实现时WangPo,PanJinLian和JiaShi都必需实现KindWoman接口。
- Java代理之代理模式
- java代理模式---静态代理
- java代理模式--动态代理
- 代理模式&java动态代理
- JAVA代理模式--静态代理
- JAVA代理模式--动态代理
- JAVA动态代理 代理模式
- Java代理模式-静态代理
- java代理模式-动态代理
- Java代理模式 静态代理 动态代理
- JAVA代理模式与动态代理模式
- JAVA代理模式与动态代理模式
- JAVA代理模式与动态代理模式
- JAVA代理模式与动态代理模式
- JAVA代理模式与动态代理模式
- JAVA代理模式与动态代理模式
- Java代理模式和kotlin代理模式
- Java中的代理模式
- Android软键盘强制弹出,隐藏输入法.
- json集合字符串转对象
- Python http 请求笔记
- Sping之Bean的生命周期
- JAVA中int与string互转的效率对比
- Java代理模式
- git生成ssh key及本地解决多个ssh key的问题
- JS 打开新窗口的方法
- Bluetooth之蓝牙scan 全程分析
- 快速学会缓存工具DiskLruCache
- 获取当前年月日和星期
- ZOJ 1008 Gnome Tetravex
- 网站的安全架构
- 用户、角色、权限数据库设计