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

Java设计模式概述之结构型模式(代理模式)

2017-02-06 13:38 423 查看

二、代理模式

我们在实践过程中,常常需要对一个类的功能进行完善和增强。于是,我们经常会用继承类和实现接口的方式来增强一个类,但这样或多或少会造成类与类之间的耦合:继承类之后不能再继承其他类;实现接口的话必须实现接口中的所有方法,且若接口的方法发生改变,实现接口类也必须做出改变,这样不利于最大限度扩展。

代理模式(Proxy)使用代理类来增强原始类。代理类需要与原始类建立逻辑关系的代码,而原始类不需要任何改动。这样有利于原始类的扩展与维护。代理模式增强原始类得到方式是非侵入性的。

Spring AOP(Aspect Oriented Programming)就很好的体现了代理模式。

下面我们来分析一段代理模式的实例代码:

/**
* @author Hanlin Wang
*/

public class ProxyMode {
public static void main(String[] args) {
Proxy proxy = new Proxy();
proxy.run();
}
}

//定义接口
interface Resource{
void run();
}

//定义类实现Resource接口
class M implements Resource{
public void run() {
System.out.println("M's running");
}
}

//定义代理类
class Proxy implements Resource{
private M m;
public Proxy(){
m = new M();
}
@Override
public void run() {
// TODO Auto-generated method stub
before();
m.run();
after();
}
private void before(){
System.out.println("before");
}
private void after(){
System.out.println("after");
}
}


代理类中定义类before和after方法,用来增强被代理类(原始类)的run方法。Proxy类封装了一个M类引用m,并在Proxy类实例化时同时实例化M类。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  java java设计模式