其他分享
首页 > 其他分享> > 设计模式二十(状态模式)

设计模式二十(状态模式)

作者:互联网

状态模式:用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题。

结构:
context 环境类:环境类中维护一个State对象,他是定义了当前的状态。
State抽象状态类:定义了状态的抽象方法
ConcreteState具体状态类:每一个类封装了一个状态对应的行为。

代码实现:
定义交通信号灯的三种状态,以及不同状态对应的方法。

// 抽象状态类
public interface LightState {
	void handler();
}
// 具体状态类
class RedLight implements LightState{
	public void handler() {
		System.out.println("红灯,不能走");
	}
}
class YellowLight implements LightState{
	public void handler() {
		System.out.println("黄灯,不能走");
	}
}
class GreenLight implements LightState{
	public void handler() {
		System.out.println("绿灯,可以走");
	}
}

环境类:存储了当前的状态,可以进行状态的切换。

public class Context {
	private LightState lightState;
	public Context() {
	}
	public void setState(LightState s){
		System.out.println("修改状态!");
		lightState = s;
		lightState.handler();
	}
}

调用测试

public class Client {
	public static void main(String[] args) {
		Context ctx = new Context();
		ctx.setState(new RedLight());
		ctx.setState(new GreenLight());
	}
}

标签:状态,二十,LightState,void,模式,class,handler,设计模式,public
来源: https://blog.csdn.net/weixin_40540957/article/details/120436664