我了解在C#中不支持静态方法继承。我也阅读过许多讨论(包括这里),其中开发人员声称需要这种功能,而典型的回答是“如果您需要静态成员继承,则设计存在缺陷”。
好的,既然面向对象编程不希望我甚至考虑静态继承,我必须得出结论,我的显然需要指向我的设计错误。 但是,我卡住了。我真的很感激有人能够帮助我解决这个问题。以下是挑战...
我想创建一个抽象的基类(我们称之为Fruit),该类封装了一些复杂的初始化代码。 这些代码无法放置在构造函数中,因为其中一些将依赖于虚方法调用。
Fruit将被其他具体类(Apple,Orange)继承,每个类都必须公开一个标准工厂方法CreateInstance()来创建和初始化实例。
如果可行的话,我会将工厂方法放在基类中,并使用虚方法调用派生类来获取必须从中初始化具体实例的类型。客户端代码只需调用Apple.CreateInstance()即可获得一个完全初始化的Apple实例。
但显然这是不可能的,那么有人能否请解释我的设计如何改变以适应相同的功能。
好的,既然面向对象编程不希望我甚至考虑静态继承,我必须得出结论,我的显然需要指向我的设计错误。 但是,我卡住了。我真的很感激有人能够帮助我解决这个问题。以下是挑战...
我想创建一个抽象的基类(我们称之为Fruit),该类封装了一些复杂的初始化代码。 这些代码无法放置在构造函数中,因为其中一些将依赖于虚方法调用。
Fruit将被其他具体类(Apple,Orange)继承,每个类都必须公开一个标准工厂方法CreateInstance()来创建和初始化实例。
如果可行的话,我会将工厂方法放在基类中,并使用虚方法调用派生类来获取必须从中初始化具体实例的类型。客户端代码只需调用Apple.CreateInstance()即可获得一个完全初始化的Apple实例。
但显然这是不可能的,那么有人能否请解释我的设计如何改变以适应相同的功能。