您的位置:首页 > 编程语言 > Java开发

代理模式(Proxy) Java

2016-06-23 18:22 591 查看

定义:

代理模式: 为其他对象提供一种代理以控制对这个对象的访问。

使用场合:

远程代理,一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。

虚拟代理,创建对象开销很大,通过代理模式来存放实例化很长时间的真实对象。

安全代理,可以控制真实对象的访问权限。

类图:



代码:

package ding.study.designpatterns.proxy;
/**
* 请求接口
* @author daniel
* @email 576699909@qq.com
* @time 2016-5-19 上午10:34:51
*/
public interface Subject {

/**
* 发出请求
* @author daniel
* @time 2016-5-19 上午10:34:58
*/
public void request();
}

package ding.study.designpatterns.proxy;
/**
* 请求实现类
* @author daniel
* @email 576699909@qq.com
* @time 2016-5-19 上午10:42:42
*/
public class SubjectImpl implements Subject {

@Override
public void request() {

System.out.println("发出请求");
}

}

package ding.study.designpatterns.proxy;

/**
* 代理类
*
* @author daniel
* @email 576699909@qq.com
* @time 2016-5-19 上午10:42:33
*/
public class Proxy implements Subject {
private Subject subject;

@Override
public void request() {
if (subject == null) {
subject = new SubjectImpl();
}
subject.request();
}

}

package ding.study.designpatterns.proxy;

import java.util.ArrayList;
import java.util.List;

/**
* 代理模式:为其他对象提供一种代理以控制对这个对象的访问。
*
* 使用场合:
*
* 远程代理,一个对象在不同的地址空间提供局部代表。这样可以隐藏一个对象存在于不同地址空间的事实。
*
* 虚拟代理,创建对象开销很大,通过代理模式来存放实例化很长时间的真实对象。
*
* 安全代理,可以控制真实对象的访问权限。
*
* @author daniel
* @email 576699909@qq.com
* @time 2016-5-19 上午10:44:26
*/
public class Zmain {

/**
* @author daniel
* @time 2016-5-19 上午10:43:07
* @param args
*/
public static void main(String[] args) {

Proxy proxy = new Proxy();
proxy.request();

/* Wan w=new Wan();
WanInvocationImpl impl = new WanInvocationImpl(w);
Wan wan = (Wan)Proxy.newProxyInstance(Wan.class.getClassLoader(),new Class[] { Wan.class }, impl);

wan.run();

List list=(List)ProxyUtil.newProxyInstance(new ArrayList(), new MyAdvice());
list.add("aa");
list.add("bb");
System.out.println(list.size());
list.clear();
System.out.println(list.size());

WanImpl list=(WanImpl)ProxyUtil.newProxyInstance(new WanImpl(), new MyAdvice());

list.run();*/

}

}

源码:

https://github.com/dingsai88/StudyTest/tree/master/src/ding/study/designpatterns/proxy
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: