`
halbert918
  • 浏览: 4236 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
社区版块
存档分类
最新评论

GoF——状态(State)模式

阅读更多

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();
		}
    }
	
}
 
 
分享到:
评论

相关推荐

    设计模式精解-GoF 23种设计模式解析附C++.pdf

    - **State模式**:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 - **Observer模式**:定义了对象之间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会...

    设计模式精解-GoF 23种设计模式解析附C++实现源码

    3. **State模式** - **定义**:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 - **应用场景**:一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。 - **...

    设计模式精解-GoF 23种设计模式解析附C++实现源码.pdf

    - **3.3 State模式**:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 - **应用场景**:一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为时。 - **优点**:...

    设计模式精解——GoF23中设计模式解析

    3. **State模式**:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。这种模式适用于对象的行为依赖于它的状态,并且它必须在运行时刻根据状态改变它的行为。 4. **Observer模式**:定义...

    GoF 23种设计模式解析附C++实现源码(2nd Edition

    - **3.3 State模式**:状态模式允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 - **3.4 Observer模式**:观察者模式定义了对象之间的一种一对多的依赖关系,以便当一个对象的状态发生...

    设计模式精解-GoF 23 种设计模式解析附 C++实现源码

    - **3.3 State模式**:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。这种模式适用于对象的行为取决于它的状态,并且它必须在运行时根据状态改变它的行为。 - **3.4 Observer模式**:...

    设计模式精解-GoF 23种设计模式解析附

    - **State模式**:允许一个对象在其内部状态改变时改变它的行为。 - **应用场景**:当一个对象的行为随着其状态的变化而变化时。 - **优点**:将状态转换逻辑与行为分开。 - **缺点**:可能会导致状态类的增多。 ...

    GoF+23种设计模式解析.pdf

    例如,深入理解State模式并给出C++实现示例,以及探讨为什么使用设计模式——从Singleton模式谈起等内容。 #### 总结 《GoF+23种设计模式解析.pdf》这本书不仅详细介绍了23种设计模式的概念和应用场景,而且还提供...

    设计模式精解(GoF 23 种设计模式解析)

    - **应用场景**:当一个对象的行为取决于它的状态,并且它必须在运行时根据状态改变它的行为时,可以使用State模式。例如,游戏中的游戏角色状态变化。 - **优点**:可以清楚地定义一个对象在不同状态下所表现出的...

    设计模式精解-GoF 23种设计模式解析

    State模式允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。 - **3.4 Observer模式** Observer模式定义了对象之间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它...

Global site tag (gtag.js) - Google Analytics