代理模式
来源:互联网 发布:vmware mac os 联网 编辑:程序博客网 时间:2024/05/29 10:59
用一个成语来解释代理模式很恰当---------------越俎代庖
定义:给一个对象提供一个代理对象,由这个代理对象控制对原对象的引用,使得代理类在客户端和原对象之间起到一个中介作用
关于定义的几点说明:
1,代理类需要保存原来对象的引用,从而可以操作原对象
2,实际上的处理逻辑仍然在具体的原类里,而代理只负责调用
3,代理类除了代理原类之外,还可以有自己的功能
例子:小说《知北游》里面,里面的人妖如果想要获得灵宝天或者色*欲天的宝物,必须得进化飞升才能进入,但是主人公林飞却可以不用进化飞升之间从盗贼“空空玄”手里直接拿到宝物,在这里空空玄就可以看做是色*欲天或者是灵宝天的代理
例子程序:
/**
*宝物接口,里面是宝物的信息
* @author Arthur
*/
public interface Treasure {
void treasureInfo();
}
/**********************************************************
/**
*原类
* @author Arthur
*/
public class LingBaoTian implements Treasure{
private String info = null;
@Override
public void treasureInfo() {
info = "这是灵宝天的宝贝";
System.out.println(info);
}
}
*********************************************************************
/**
*空空玄代理类,持有原类灵宝天的引用
* @author Arthur
*/
public class KongKongXuan implements Treasure{
private Treasure lbt = new LingBaoTian();//
@Override
public void treasureInfo() {
System.out.println("给你");
lbt.treasureInfo();
}
public KongKongXuan() {
}
}
**************************************************************************
/**
*主人公林飞
* @author Arthur
*/
public class LinFei {
KongKongXuan kkx;//林飞的空空玄
public LinFei() {
kkx = new KongKongXuan();
}
public LinFei(KongKongXuan kkx) {
this.kkx = kkx;
}
/**
* 命令空空玄拿来宝物
*/
public void commondKkx(){
System.out.println("我要想要灵宝天的宝物");
kkx.treasureInfo();
}
}
******************************************************************************
/**
*主人公林飞
* @author Arthur
*/
public class LinFei {
KongKongXuan kkx;//林飞的空空玄
public LinFei() {
kkx = new KongKongXuan();
}
public LinFei(KongKongXuan kkx) {
this.kkx = kkx;
}
/**
* 命令空空玄拿来宝物
*/
public void commondKkx(){
System.out.println("我要想要灵宝天的宝物");
kkx.treasureInfo();
}
}
*********************************************************
/**
*主人公林飞
* @author Arthur
*/
public class LinFei {
KongKongXuan kkx;//林飞的空空玄
public LinFei() {
kkx = new KongKongXuan();
}
public LinFei(KongKongXuan kkx) {
this.kkx = kkx;
}
/**
* 命令空空玄拿来宝物
*/
public void commondKkx(){
System.out.println("我要想要灵宝天的宝物");
kkx.treasureInfo();
}
}
********************************
结果“
我要想要灵宝天的宝物
给你
这是灵宝天的宝贝
定义:给一个对象提供一个代理对象,由这个代理对象控制对原对象的引用,使得代理类在客户端和原对象之间起到一个中介作用
关于定义的几点说明:
1,代理类需要保存原来对象的引用,从而可以操作原对象
2,实际上的处理逻辑仍然在具体的原类里,而代理只负责调用
3,代理类除了代理原类之外,还可以有自己的功能
例子:小说《知北游》里面,里面的人妖如果想要获得灵宝天或者色*欲天的宝物,必须得进化飞升才能进入,但是主人公林飞却可以不用进化飞升之间从盗贼“空空玄”手里直接拿到宝物,在这里空空玄就可以看做是色*欲天或者是灵宝天的代理
例子程序:
/**
*宝物接口,里面是宝物的信息
* @author Arthur
*/
public interface Treasure {
void treasureInfo();
}
/**********************************************************
/**
*原类
* @author Arthur
*/
public class LingBaoTian implements Treasure{
private String info = null;
@Override
public void treasureInfo() {
info = "这是灵宝天的宝贝";
System.out.println(info);
}
}
*********************************************************************
/**
*空空玄代理类,持有原类灵宝天的引用
* @author Arthur
*/
public class KongKongXuan implements Treasure{
private Treasure lbt = new LingBaoTian();//
@Override
public void treasureInfo() {
System.out.println("给你");
lbt.treasureInfo();
}
public KongKongXuan() {
}
}
**************************************************************************
/**
*主人公林飞
* @author Arthur
*/
public class LinFei {
KongKongXuan kkx;//林飞的空空玄
public LinFei() {
kkx = new KongKongXuan();
}
public LinFei(KongKongXuan kkx) {
this.kkx = kkx;
}
/**
* 命令空空玄拿来宝物
*/
public void commondKkx(){
System.out.println("我要想要灵宝天的宝物");
kkx.treasureInfo();
}
}
******************************************************************************
/**
*主人公林飞
* @author Arthur
*/
public class LinFei {
KongKongXuan kkx;//林飞的空空玄
public LinFei() {
kkx = new KongKongXuan();
}
public LinFei(KongKongXuan kkx) {
this.kkx = kkx;
}
/**
* 命令空空玄拿来宝物
*/
public void commondKkx(){
System.out.println("我要想要灵宝天的宝物");
kkx.treasureInfo();
}
}
*********************************************************
/**
*主人公林飞
* @author Arthur
*/
public class LinFei {
KongKongXuan kkx;//林飞的空空玄
public LinFei() {
kkx = new KongKongXuan();
}
public LinFei(KongKongXuan kkx) {
this.kkx = kkx;
}
/**
* 命令空空玄拿来宝物
*/
public void commondKkx(){
System.out.println("我要想要灵宝天的宝物");
kkx.treasureInfo();
}
}
********************************
结果“
我要想要灵宝天的宝物
给你
这是灵宝天的宝贝
- 代理模式--动态代理
- 代理模式-静态代理
- 代理模式-静态代理
- 代理模式 & 动态代理
- 代理模式--静态代理
- 代理模式--动态代理
- 代理模式(动态代理)
- 代理模式-动态代理
- 代理模式-动态代理
- 代理模式动态代理
- 代理模式-静态代理
- 代理模式-动态代理
- 代理模式 -动态代理
- 代理模式---动态代理
- 代理模式-动态代理
- 代理模式--静态代理
- 代理模式!
- 代理模式
- Xcode调试 之 内存泄露
- Struts功能详解 ——ActionServlet
- 使用java XMLDecoder实现应用程序的动态配置
- 设置karrigell3.1.1基本网站配置
- 安装了ReSharper,卸载以后,Vs2010没有了智能提示功能的解决方法
- 代理模式
- 测试8000薪水是这样得到的
- 奇怪的C语言代码
- 关于Jmail不能发送邮件问题
- linux文件系统的系统分析--(五)路径名的查找
- 如何在Android模拟器下添加busybox(图文)
- Java程序员从笨鸟到菜鸟之(二十六)XML之DOM和SAX解析
- 【zz】实现一棵多叉树
- Spring参考手册 mvc:resources 分类: