设计模式:行为模式 - 状态模式
程序员文章站
2024-03-24 19:12:10
...
状态模式:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类
主要解决: 当控制一个对象状态转换的条件表达式过于复杂时,把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的逻辑简化。 (当然,如果这个状态判断很简单,那就没必要用状态模式了)
什么时候用?
当一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为时,就可以考虑使用状态模式了
UML:
JAVA:
public class StateTest {
public static void main(String[] args) {
Content content = new Content();
content.getState().nextState(content);
content.getState().xingwei();
content.getState().nextState(content);
content.getState().xingwei();
}
}
interface State{
void nextState(Content content);
void xingwei();
}
class StateA implements State{
@Override
public void nextState(Content content) {
content.setState(new StateB());
}
@Override
public void xingwei() {
System.out.println("A的行为");
}
}
class StateB implements State{
@Override
public void nextState(Content content) {
content.setState(new StateA());
}
@Override
public void xingwei() {
System.out.println("B的行为");
}
}
class Content{
private State state = new StateA();
public void questNextState(){
state.nextState(this);
}
public State getState() {
return state;
}
public void setState(State state) {
this.state = state;
}
}
上一篇: 消息中间件kafka基础篇
下一篇: Django学习-中间件