代理设计模式 - 静态代理
代理: 替真正执行Action的人做事情, 在"执行人"做事情的前后, 代理可以执行一些额外的Action
代码模板
public class T04_StaticProxy {
@Test
public void MT() {
Tenant tenant = new Tenant();
LettingAgent lettingAgent = new LettingAgent(tenant);
lettingAgent.rentHouse(); //代理: 代替真正的背后人物出场做事
}
//租户
static class Tenant{
//租房动作
public void rentHouse() {
System.out.println("rent house");
}
}
//代理: 租房中介
static class LettingAgent extends Tenant{
private Tenant tenant;
public LettingAgent(Tenant tenant) {
this.tenant = tenant;
}
//租房动作
@Override
public void rentHouse() {
System.out.println("Agent do something before...");
tenant.rentHouse();
System.out.println("Agent do something afterwards...");
}
}
}
代理的意义: 增强原业务类的功能.
有同学可能会说, 包装设计模式的作用也是增强业务类的功能, 那么代理在语法实现上以及功能上是否重复了呢?
答: 不重复, 语法上的确相似, 很多设计模式之间都是有些类似的地方, 但是语义上,
1, 包装设计模式, 要做的是和业务类相关的功能, 例如, IO流中的缓冲流等;
2, 代理要做的, 是和业务类不相关的功能, 例如, 在业务类中增加日志打印, 事务…