0

我有一个名为State的静态抽象类,它定义了抽象方法start()update(),然后我有多个实现State的类。

现在我想创建一个类,我们称之为StateMachine,它有一个名为currentState的属性。我希望能够将此属性设置为指向实现状态的静态类,以便我可以运行诸如currentState.update()之类的东西。

现在是我的问题:

财产的类型应该是什么?我会说状态,但我觉得还有更多的东西。另外,我将如何设置属性?是

currentState = ClassThatImplementsState;

一个有效的事情吗?

编辑:好的,所以我刚刚了解到您不能从 C# 中的静态类继承。我想知道一种做与此类似的事情的方法,它可以让我同时拥有多态性并且不必实例化状态对象。有这样的事吗?

4

1 回答 1

2

如果State静态类,则不能有多个“实现”类,即从它派生。另一方面,当它是一个抽象类时,您可以从它派生。但不可能两者兼而有之。

编辑:我认为您真正想要的是单例而不是抽象或静态类。有关如何在 C# 中实现单例模式的提示,请参阅http://msdn.microsoft.com/en-us/library/ff650316.aspx 。

编辑 2:如果您的应用程序是多线程的,请务必使用单例模式的线程安全变体。

于 2014-08-18T13:27:28.580 回答