我有一个名为 State 的静态抽象类,它定义了抽象方法 start()和 update(),然后我有多个类实现状态。
现在我要创建一个类,我们称之为 StateMachine ,它有一个名为 currentState 的属性。我希望能够将此属性设置为指向实现状态的静态类,以便我可以运行 currentState.update()之类的内容。
现在我的问题出现了:
该物业的类型应该是什么?我说State,但我觉得还有更多的东西。另外,我将如何设置房产?是
currentState = ClassThatImplementsState;
有效的事情吗?
编辑:好的,所以我刚刚知道你不能从C#中的静态类继承。我想知道一种类似于此的方法,这种方式可以让我既可以实现多态性,又不需要实例化状态对象。有这样的事吗?
答案 0 :(得分:2)
如果状态是静态类,则您不能拥有多个实现"的类,即从中派生。另一方面,当它是抽象类时,您可以从中派生出来。但它不可能都是。
编辑:我认为你真正想要的是一个 Singleton 而不是一个抽象或静态的类。有关如何在C#中实现Singleton模式的提示,请参阅http://msdn.microsoft.com/en-us/library/ff650316.aspx。
编辑2:如果您的应用程序是多线程的,请务必使用Singleton模式的线程安全变体。