继承:前提是类与类之间必须存在关系,子类就具有了父类所有非私有的成员,且子类也具备了缓冲功能。这样的话继承体系就会很臃肿,并不利于扩展。
装饰:是为了对已有的功能进行增强,将该对象作为参数传递给装饰类的构造函数,并给予已有的功能来实现增强。
如果用继承,那么我们不需要用的功能在对象进行缓冲时,也会被缓冲。所以只需要被缓冲的对象作为参数传递给缓冲区,也就是功能的单独缓冲(方法体都是会在对象调用时存入方法区中)。
这样继承体系就变得很简单,优化了体系结构,同时也降低了类与类之间的关系。装饰比继承更灵活。
切记仅为了某个功能而去继承,有可能这两类根本就没关系。
比如IO中就存在装饰类,readLine就是将read装饰了,而不是通过复写来实现一行的读取。
其实毕老师在IO中讲解装饰时还是很详细的,可以多看看。
|