0%

代理模式

描述

代理模式就是多一个代理类出来,替原对象进行一些操作

适用

如果已有的方法在使用的时候需要对原有的方法进行改进,此时有两种办法:

  1. 修改原有的方法来适应。这样违反了“对扩展开放,对修改关闭”的原则。
  2. 就是采用一个代理类调用原有的方法,且对产生的结果进行控制。这种方法就是代理模式。

使用代理模式,可以将功能划分的更加清晰,有助于后期维护!

其他

与装饰模式很相似,不同之处是在装饰模式中,实例化对象时会首先实例化一个目标类,然后实例化一个装饰类,之后装饰目标类(将目标类用作装饰类的对象);

代理对象是实例化时直接实例化的是代理对象,在代理类中默认会有一个目标类实例变量;

示例

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
//接口
interface Source {
public void name();
}
//抽象类
class Animal implements Source {
@Override
public void name(){
Test.printMsg("Animal.name");
};
}
// 代理类
class Proxy implements Source {
private Source source;
public Proxy(){
super();
this.source = new Animal();
}
@Override
public void name(){
before();
source.name();
after();
}
public void before(){
Test.printMsg("before");
}
public void after(){
Test.printMsg("after");
}
}
//测试
public class Test {
public static void printMsg(String msg){
System.out.println(msg);
}
public static void main(String[] args){
Source source = new Proxy();
source.name();
}
}