Skip to main content
 首页 » 编程设计

Java 状态模式

2022年07月19日27powertoolsteam

1.状态模式简介

在状态模式(State Pattern)中,类的行为是基于它的状态的改变而改变的。这种类型的设计模式属于行为型模式。
在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。

2.Demo实现

我们将创建一个 State 接口和实现了 State 接口的实体状态类。Context 是一个带有某个状态的类。

class Context { 
    private String name; 
    private State state; 
 
    public Context(String name) { 
        this.name = name; 
        this.state = null; 
    } 
 
    public String getName() { 
        return name; 
    } 
 
    public void setState(State state) { 
        this.state = state; 
    } 
 
    public State getState() { 
        return this.state; 
    } 
} 
 
interface State { 
    void doAction(Context context); 
    String toString(); 
} 
 
 
class StartState implements State { 
    public void doAction(Context context) { 
        context.setState(this); 
        System.out.println("context " + context.getName() + "'s state is " + toString()); 
    } 
    public String toString() { 
        return "starting"; 
    } 
} 
 
class StopState implements State { 
    public void doAction(Context context) { 
        context.setState(this); 
        System.out.println("context " + context.getName() + "'s state is " + toString()); 
    } 
    public String toString() { 
        return "stoping"; 
    } 
} 
 
 
public class StatePatternDemo { 
    public static void main(String args[]) { 
        Context con1 = new Context("Computer1"); 
        Context con2 = new Context("Computer2"); 
         
        StartState startState = new StartState(); 
        startState.doAction(con1); 
 
        StopState stopeState = new StopState(); 
        stopeState.doAction(con1); 
 
        startState.doAction(con2); 
        stopeState.doAction(con2); 
    } 
}

参考:http://www.runoob.com/design-pattern/state-pattern.html


本文参考链接:https://www.cnblogs.com/hellokitty2/p/10732895.html