具有状态机设计模式的Android Model-View-Presenter

时间:2017-11-20 17:16:21

标签: android design-patterns state mvp state-machine

假设我有一个包含3种状态的元素:state1state2state3。最基本的流程是:

  

state1 - > state2 - > state3 - > state1 - > ......等等。

按钮单击时更改状态。我实现了State Machine设计模式来管理这些状态。

当然,当状态发生变化时,某些事情会在布局和逻辑层中发生变化。 问题是,我想知道MVP实现与这些状态更改的结果如何。我应该把视图改变逻辑放在哪里,我应该把模型改变逻辑放在哪里。一个基本的例子很棒。

这是我的代码:

MainActivity.java

StateContext stateContext;

@OnClick(R.id.button_change_state)
public void onClickChangeStateButton(View view) {
    stateContext.takeAction();
}

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ButterKnife.bind(this);
    stateContext = new StateContext();
}

StateContext.java

public class StateContext {
    private State state;
    public StateContext() {
        this.state = new State1();
    }

    public void setState(final State state) {
        this.state = state;
    }

    public void takeAction() {
        state.takeAction(this);
    }

}

State.java

public interface State {
    void takeAction(StateContext stateContext);
}

示例State1.java

public class State1 implements State {

    @Override
    public void takeAction(StateContext stateContext) {
        Toast.makeText(Application.getContext(), "Graphical actions here, going to state2", Toast.LENGTH_SHORT ).show();
        stateContext.setState(new State2());
    }
}

0 个答案:

没有答案