Sim*_*mon 6 mvp android design-patterns state-machine state-pattern
假设我有一个具有 3 个状态的元素:state1, state2, state3。最基本的流程是:
state1 -> state2 -> state3 -> state1 -> ... 等等
单击按钮时状态会更改。我实现了状态机设计模式来管理这些状态。
当然,当状态发生变化时,布局和逻辑层中的某些事情也会发生变化。问题是,我想知道 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();
}
Run Code Online (Sandbox Code Playgroud)
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);
}
}
Run Code Online (Sandbox Code Playgroud)
State.java:
public interface State {
void takeAction(StateContext stateContext);
}
Run Code Online (Sandbox Code Playgroud)
例子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());
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
711 次 |
| 最近记录: |