模式结构
组成:
抽象角色:通过接口或抽象类声明真实角色实现的业务方法。
代理角色:实现抽象角色,是真实角色的代理,通过真实角色的业务逻辑方法来实现抽象方法,并可以附加自己的操作。
真实角色:实现抽象角色,定义真实角色所要实现的业务逻辑,供代理角色调用。
代码实现
//抽象角色
interface ProxyBase {
void f();
void g();
void h();
}
// 代理角色 也是实现了同样的代理接口 所以通过同一个接口来完成所谓的代理(来调用实现类中的方法)
class Proxy implements ProxyBase {
private ProxyBase implementation;
public Proxy() {
// 这是一个实现类 实现了某个接口
implementation = new Implementtation();
}
@Override
public void f() {
implementation.f();
}
@Override
public void g() {
implementation.g();
}
@Override
public void h() {
implementation.h();
}
}
// 真实角色
// 实现类 实现了代理的接口
class Implementtation implements ProxyBase {
@Override
public void f() {
System.out.println("Implementation.f()");
}
@Override
public void g() {
System.out.println("Implementation.g()");
}
@Override
public void h() {
System.out.println("Implementation.h()");
}
}
// 测试用例
public class _01Proxy extends TestCase {
Proxy p = new Proxy();
public void test() {
p.f();
p.g();
p.h();
}
public static void main(String[] args) {
junit.textui.TestRunner.run(_01Proxy.class);
}
}