代理模式: 注重控制对方法的访问,代理者可以决定是否调用被代理对象的方法。 应在构造方法中实例化被代理的对象。不应让访问者知道,你代理了哪个对象。 装饰者模式: 注重为方法添加额外的行为,装饰者一定会调用被装饰对象的方法的。 可以动态指定被装饰的对象,具体做法是,装饰者类应该包含一个以被装饰者对象为参数的构造函数。 装饰者模式的最佳例子就是Java中的IO流