state模式,系统运行过程中状态的切换
如:灯泡状态的改变(打开关闭),模拟两次打开关闭状态的改变
/**
*
* <p>灯状态抽象类</p>
*/
public abstract class LightState {
public abstract void chageState(Controller controll);
}
/**
*
* <p>点击按钮打开灯状态的实现类</p>
*/
public class OpenLightState extends LightState {
@Override
public void chageState(Controller controll) {
System.out.println("灯已打开....");
controll.setLightState(new CloseLightState());//将按钮的控制状态设置为关闭方式
}
}
/**
*
* <p>点击按钮关闭灯状态的实现类</p>
*/
public class CloseLightState extends LightState {
@Override
public void chageState(Controller controll) {
System.out.println("灯已关闭....");
controll.setLightState(new OpenLightState());//将控制器的按钮设置为可打开灯的状态
}
}
/**
*
* <p>灯泡状态切换控制器,通过开关Controller改变灯泡的状态</p>
*/
public class Controller {
private LightState lightState;
public Controller() {
lightState = new OpenLightState();//第一次默认为打开灯泡
}
public void ControllLight() {//灯泡控制方式
lightState.chageState(this);
}
public LightState getLightState() {
return lightState;
}
public void setLightState(LightState lightState) {
this.lightState = lightState;
}
}
/**
*
* <p>state模式,系统运行过程中状态的切换
* eg:灯泡状态的改变(打开关闭),模拟两次打开关闭状态的改变
* </p>
*/
public class StateGoFTest {
public static void main(String[] args) {
Controller con = new Controller();
for(int i = 0; i < 4; i++) {
System.out.println("===============灯正在改变状态==============");
con.ControllLight();
}
}
}
分享到:
相关推荐
- **State模式**:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 - **Observer模式**:定义了对象之间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会...
3. **State模式** - **定义**:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 - **应用场景**:一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。 - **...
- **3.3 State模式**:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 - **应用场景**:一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为时。 - **优点**:...
3. **State模式**:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。这种模式适用于对象的行为依赖于它的状态,并且它必须在运行时刻根据状态改变它的行为。 4. **Observer模式**:定义...
- **3.3 State模式**:状态模式允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 - **3.4 Observer模式**:观察者模式定义了对象之间的一种一对多的依赖关系,以便当一个对象的状态发生...
- **3.3 State模式**:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。这种模式适用于对象的行为取决于它的状态,并且它必须在运行时根据状态改变它的行为。 - **3.4 Observer模式**:...
- **State模式**:允许一个对象在其内部状态改变时改变它的行为。 - **应用场景**:当一个对象的行为随着其状态的变化而变化时。 - **优点**:将状态转换逻辑与行为分开。 - **缺点**:可能会导致状态类的增多。 ...
例如,深入理解State模式并给出C++实现示例,以及探讨为什么使用设计模式——从Singleton模式谈起等内容。 #### 总结 《GoF+23种设计模式解析.pdf》这本书不仅详细介绍了23种设计模式的概念和应用场景,而且还提供...
- **应用场景**:当一个对象的行为取决于它的状态,并且它必须在运行时根据状态改变它的行为时,可以使用State模式。例如,游戏中的游戏角色状态变化。 - **优点**:可以清楚地定义一个对象在不同状态下所表现出的...
State模式允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。 - **3.4 Observer模式** Observer模式定义了对象之间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它...