现在,假设我们想给这些类增加一些新的职责如:文本缓存器、大小定转换、文本分析。
现在,假设我们想给这些类增加一些新的职责如:文本缓存器、大小定转换、文本分析。
继承机制是添加功能的一种有效途径。从ttextstream类继承了缓存器可以被多个子类的实例使用。但不是很灵活。因为缓存器的选择是静态的了。客户程序不能控制选择缓存器的方式和时机。如此,加重了抽象类ttextstream的字段的负担来控制缓存器,并将带入到它的第一个实例中。通常最好保持高层次的(抽象)基类的轻量。在基类中增加不规则化和原文分析会使它最变得非常笨重!
如果你不想创建一个重量级的基类就会产生别外一个问题。有这样一种情况:大量的独立的继承是可能是,但瀑发式的产生大量的子类来支持不同组合如:tbuftextfile、tscrambledtextfile、tbufscrambledtextfile、tbuflineprinter、tscrambledlineprinter及其它。发生同样问题,如果类定义对子类隐藏或不可见的。比如说,如果你想在第三的组件库的高层类中加入一个新的职责,试着给delphi的tstream加入一个新的职责!