装饰模式VS代理模式
代理模式:http://blog.youkuaiyun.com/gaodml/article/details/42588053
区别在于代理类的代码逻辑,可以新增一些格外的装饰方法在里面
package com;
public class ProxyObj implements IAbstractObj {
RealObj realObject = new RealObj();
@Override
public void doSomeThings() {
doOtherThings();
realObject.doSomeThings(); //代理类方法
}
//装饰方法,在没改变源代码的情况下,又包装了新的功能进去,然后通过public的方法对外提供,JDK里面的IO包装就是采用装饰模式。
private void doOtherThings(){
System.out.println("装饰方法");
}
}
两个模式的区别:
基本框架一致,代理模式强调的是对被代理对象方法的控制权,装饰模式强调的是对原来功能基础上新增附加功能
换句话说:一个是对方法权限控制,一个是新增功能的体现。
(面试美团被问到)