使用状态模式了解对象的状态

Knowing the state of an object using the state pattern

我正在使用状态模式,我需要知道给定对象在哪个状态下打印它。我想过使用一个抽象方法返回一个字符串,每个状态都会用自己的名称覆盖它,这是一个可以接受的解决方案吗?

public abstract class State{

    public abstract String getState();

}

class StateOne extends State{

    @Override
    public String getState(){ return "StateOne"; }

}

// And so on for each state...

看来你是”是一个的关系,所以把抽象方法getState()放在抽象class中是可以的:

public abstract class State{

    public abstract String getState();

}

摘要 class 应该包含所有派生的 classes 的行为。 getState() 方法计划用于所有派生的 classes。另外,getState()方法与Stateclass有很高的内聚性。所以这是使用继承的情况。

Read more when to prefer inheritance or composition.