C# 设计基类时的继承策略
我在设计阶段有一个基类和一个派生类。基类将保持为一个,但许多派生类将从中继承。因此,在将来对派生类进行更改是非常昂贵的,我正在寻找最好的设计来防止这种情况 事实上,派生类只需要重写几个方法(如果需要的话),但很容易向它透露更多细节 我的问题是关于未来可扩展的政策 如果需要,我是否可以在不更改派生类的情况下,将继承的方法/属性最小化到派生类,并在下一个版本中显示更多 或者我应该透露将来派生类可能使用的任何东西,让它们选择是否需要它们C# 设计基类时的继承策略,c#,inheritance,C#,Inheritance,我在设计阶段有一个基类和一个派生类。基类将保持为一个,但许多派生类将从中继承。因此,在将来对派生类进行更改是非常昂贵的,我正在寻找最好的设计来防止这种情况 事实上,派生类只需要重写几个方法(如果需要的话),但很容易向它透露更多细节 我的问题是关于未来可扩展的政策 如果需要,我是否可以在不更改派生类的情况下,将继承的方法/属性最小化到派生类,并在下一个版本中显示更多 或者我应该透露将来派生类可能使用的任何东西,让它们选择是否需要它们 谢谢您可以在以后将更多的方法和属性从私有更改为受保护。唯一的规则
谢谢您可以在以后将更多的方法和属性从私有更改为受保护。唯一的规则是现有的受保护成员不能再被私有化我现在肯定会尽量减少受保护方法的数量。预测未来总是很困难的,在开发/设计一个类的过程中会有太多的事情发生变化,所以最好的办法是保留它,并为你现在知道的做最好的设计,而不是为将来某个时候可能需要或可能需要的做最好的设计。除了其他人发布的内容,你会想考虑谁是你的基类的目标受众。它们是打算由您的客户或其他外部消费者扩展的API或框架的一部分,还是该抽象完全由您自己控制(即,只有您将实现派生)
根据答案,您可能需要非常仔细地考虑您公开的基类——设计一个好的、灵活的继承方案可能很困难。没有API,它完全在我的控制之下。派生类还实现了一个接口,这个接口当然也由基类实现。