代理模式Proxy Design
2005-06-30 01:11
645 查看
代理模式是对象的结构模式,操作的目标主要是类对象
下面是比较经典又精简的一个例子:
/*
* 代理模式
*/
package test_designPattern;
//抽象角色:
abstract class Subject
{
abstract public void request();
}
//真实角色:实现了Subject的request()方法。
class RealSubject extends Subject
{
public RealSubject()
{
}
public void request()
{
System.out.println("From real subject.");
}
}
//代理角色:
class ProxySubject extends Subject
{
private RealSubject realSubject; //以真实角色作为代理角色的属性
public ProxySubject()
{
}
public void request() //该方法封装了真实对象的request方法
{
preRequest();
if(realSubject == null)
{
realSubject = new RealSubject();
}
realSubject.request(); //此处执行真实对象的request方法
postRequest();
}
private void preRequest()
{
//something you want to do before requesting
}
private void postRequest()
{
//something you want to do after requesting
}
}
//测试
public class test_Proxy_pattern
{
public static void main(String[] args)
{
Subject sub=new ProxySubject();
sub.request();
}
}
代理模式将原来类的真实的操作从调用者的视野里移开,可能还增加了一些调用者觉察不到的操作,不过从类设计者的立场来看这些都不影响调用者使用原先类的功能,为了保护一个类而多生成一个新类,不敢说思想十分正确,至少感到拐了一个弯才实现自己的目的有些不爽。 可能代理模式真正发挥威力的地方是从此衍生的动态代理方法吧。
下面是比较经典又精简的一个例子:
/*
* 代理模式
*/
package test_designPattern;
//抽象角色:
abstract class Subject
{
abstract public void request();
}
//真实角色:实现了Subject的request()方法。
class RealSubject extends Subject
{
public RealSubject()
{
}
public void request()
{
System.out.println("From real subject.");
}
}
//代理角色:
class ProxySubject extends Subject
{
private RealSubject realSubject; //以真实角色作为代理角色的属性
public ProxySubject()
{
}
public void request() //该方法封装了真实对象的request方法
{
preRequest();
if(realSubject == null)
{
realSubject = new RealSubject();
}
realSubject.request(); //此处执行真实对象的request方法
postRequest();
}
private void preRequest()
{
//something you want to do before requesting
}
private void postRequest()
{
//something you want to do after requesting
}
}
//测试
public class test_Proxy_pattern
{
public static void main(String[] args)
{
Subject sub=new ProxySubject();
sub.request();
}
}
代理模式将原来类的真实的操作从调用者的视野里移开,可能还增加了一些调用者觉察不到的操作,不过从类设计者的立场来看这些都不影响调用者使用原先类的功能,为了保护一个类而多生成一个新类,不敢说思想十分正确,至少感到拐了一个弯才实现自己的目的有些不爽。 可能代理模式真正发挥威力的地方是从此衍生的动态代理方法吧。
相关文章推荐
- Java设计模式--代理模式
- F#中的异步和并行设计模式(三):代理
- 设计模式——代理模式
- java学习笔记-设计模式9(代理模式)
- JAVA设计模式之动态代理
- 代理模式之数据读写分离
- 设计模式原来如此-代理模式的实际应用
- 设计模式 - Proxy Pattern(代理模式)
- 设计模式C++实现(8)——代理模式
- 代理模式:Proxy模式
- 我与代理模式不得不说的故事
- 设计模式之代理模式(3)
- ios设计模式之代理模式
- 设计模式学习笔记——代理(Proxy)模式
- 静态代理模式设计
- 代理设计模式之静态代理与动态代理(超..)详解
- java 代理模式
- ios开发中的基本设计模式(代理,观察者,MVC,单例,策略,工厂,MVVM,原型,Target-Action,通知(notification)机制)
- 代理模式和php实现
- 设计模式之代理模式