设计模式应用场景
对象在内部的状态发生改变时,发生或改变对应的行为,根据状态决定动作
实现方式
接口定义好不同状态下会改变或者要执行的动作方法,在状态的类中实现接口方法,根据状态类型的不同,做出不同的实现
代码实现:
1.定义状态接口
interface CarState{
void openDoor();
}
2.定义状态,实现不同状态下的方法
class RunCarState implements CarState{
@Override
public void openDoor() {
System.out.println("can't open the door!");
}
}
class StopCarState implements CarState {
@Override
public void openDoor() {
System.out.println("open the door!");
}
}
3.内聚状态
class Car implements CarState{
CarState state;
public Car(CarState state){
this.state = state;
}
public void setState(CarState state) {
this.state = state;
}
@Override
public void openDoor() {
state.openDoor();
}
}
4.测试
public class Main {
public static void main(String[] args) {
Car car = new Car(new RunCarState());
car.openDoor();
System.out.println("--------");
car.setState(new StopCarState());
car.openDoor();
}
}
结果:
扩展:可通过State Pattern实现 有限状态机 FSM(Finite State Machine)
|