unity3d 具有接口分离状态的状态机

bsxbgnwa  于 2022-11-15  发布在  其他
关注(0)|答案(1)|浏览(169)

在一个经典版本的状态中,每个状态实现一些接口。

class Context
{
    private State _state;

    public void MethodA()
    {
        _state.MethodA();
    }

    public void MethodB()
    {
        _state.MethodB();
    }
}

但在我的例子中。我有一个游戏功能。它提供了一些东西来购买。它也有状态,如“活动”,“购买”,“准备”,“完成”等。从其中一些购买是允许的,从其他人-不。在更抽象的方式-每个状态只实现上下文的接口方法的一部分。和方法可能相交

class ConcreteStateA
{
    public void MethodA()
    {
        // Do A
    }

    // No MethodB
}

class ConcreteStateB
{
    // No MethodA

    public void MethodB()
    {
        // Do B
    }
}

的问题:这种方法对状态机的使用有什么修改吗?目前的变体导致在上下文调用之前直接检查状态是否正确,状态类的层次结构没有从状态类型检查问题中保存

tvokkenx

tvokkenx1#

你可以添加一个接口,这个接口有一个名为'Handle'的方法。2然后你可以在你的具体类中实现这个接口。3通过这个方法,你可以从这个状态开始说下一步要做什么,而不需要强制你去实现其他的状态。
请参见:https://www.dotnettricks.com/learn/designpatterns/state-design-pattern-c-sharp

相关问题