Cha*_*son 6 oop design-patterns public-method
如果我有一个抽象类和该类的派生类,我是否正确,根据良好和实际的设计实践,派生类不应该提供额外的公共方法(它们应该只实现抽象类,并可选择覆盖父方法)?
此外,为每个派生类设置不同的构造方法签名是否可以接受?
就个人而言,我认为两者都没有问题.
至于派生类的额外公共方法:
在许多情况下,这方面的用处有限.当类被转换或设置为对基类的引用时,额外的方法将不可用,这严重限制了这种做法的有用性.话虽如此,这种方法没有什么特别的错误.子类旨在添加特定行为 - 有时,在类层次结构中,子类中存在不适合基类的新行为.如果子类将经常单独使用,那么在方法中建模额外行为似乎是完全合理的.
至于构造函数签名 -
我也没有看到这个问题.子类通常需要将更多信息放入可用状态而不是抽象类.话虽这么说,我通常会确保实现基类中的每个构造函数,并添加子类所需的新参数.
话虽如此:
除非有充分的理由,否则我会避免使用参数少于基类的子类构造函数...为什么我能够在更通用的情况下指定某些内容而不是特定情况?我发现当子类具有与其基类完全不同的构造选项时,通常会引起混淆.