设计模式 - 静态代理

代理设计模式 - 静态代理

代理: 替真正执行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, 代理要做的, 是和业务类不相关的功能, 例如, 在业务类中增加日志打印, 事务…

猜你喜欢

转载自blog.csdn.net/malipku/article/details/120774943