`

22、状态模式

 
阅读更多

状态模式

 

1、定义

许一个对象的内部状态改变时改变它的行为。

 

2、结构图



 

Light :环境,也称为上下文,用来定义客户感兴趣的接口,同时维护一个具体处理当前状态的实例对象。
LightState:状态接口,用来封装与上下文的一个特定状态所对应的行为。
On/OffState:具体实现状态的处理类,每个实现一个跟上下文相关联的状态的具体处理。
 
3、代码
(1)light类
public class Light {

	public Light(LightState state) {
		super();
		this.state = state;
	}

	private LightState state;
	
	public void pressSwitch(){
		state.pressSwitch(this);
	}

	public LightState getState() {
		return state;
	}

	public void setState(LightState state) {
		this.state = state;
	}

}
 (2)状态抽象类
/**
 * 灯的状态
 * @author qiang
 *
 */
public abstract class LightState {
	
	public abstract void pressSwitch(Light light);

}
 (3)开启状态
/**
 * 灯开启状态
 * @author qiang
 *
 */
public class OnState extends LightState {

	/**
	 *
	 */
	@Override
	public void pressSwitch(Light light) {
		System.out.println("当前状态为on");
		light.setState(new OffState());
	}

}
 (4)灯关闭状态
/**
 * 灯关闭状态
 * @author qiang
 *
 */
public class OffState extends LightState {

	@Override
	public void pressSwitch(Light light) {
		System.out.println("当前状态为off");
		light.setState(new OnState());
	}

}
 (5)客户端
public class Client {
	
	public static void main(String[] args) {
		LightState state = new OnState();
		Light light = new Light(state);
		light.pressSwitch();
		light.pressSwitch();
		light.pressSwitch();
		light.pressSwitch();
	}

}
 (6)运行结果
当前状态为on
当前状态为off
当前状态为on
当前状态为off
 
 
  • 大小: 7.8 KB
分享到:
评论

相关推荐

    C#面向对象设计模式纵横谈(22):(行为型模式) State 状态模式

    标题和描述均提到了"C#面向对象设计模式"中的State状态模式,这表明文章的核心内容是围绕State模式在C#编程语言中的应用展开。State模式是一种行为设计模式,旨在允许对象在其内部状态改变时,其行为也能相应地改变...

    [源代码] 修炼Java开发技术 在架构中体验设计模式和算法之美 (源代码)

    ☆ 资源说明:☆《修炼Java开发技术 在架构中体验设计模式和算法之美》 (随...- (Chapter21.rar)Chapter 22 状态模式 - (Chapter22.rar)Chapter 23 策略模式 - (Chapter23.rar)Chapter 24 观察者模式 - (Chapter24.rar)

    设计模式所有实验及实验报告及代码.zip

    30状态模式 31观察者模式 32中介者模式 33迭代器模式 34访问者模式 35备忘录模式 36解释器模式 37UMLet的使用与类图的设计 38创建型模式应用实验 39结构型模式应用实验 40行为型模式应用实验 所有实验及实验报告及...

    备忘录模式 和状态模式.

    设计模式之备忘录 和 状态模式精讲 19.1 场景问题 19.1.1 开发仿真系统 考虑这样一个仿真应用,功能是:模拟运行针对某个具体问题的多个解决方案,记录运行过程的各种数据,在模拟运行完成过后,好对这多个解决...

    设计模式介绍全22种设计模式的中文教材

    - 状态模式:允许对象在其内部状态改变时改变其行为,看起来像是改变了它的类。 - 策略模式:定义了一系列算法,并将每一个算法封装起来,使它们可以互相替换。 - 模板方法模式:定义一个操作中的算法骨架,而将...

    22个编程设计模式详解

    行为型模式则关注对象之间的通信和责任分配,如观察者模式(Observer),它定义了对象间的一对多依赖关系,当一个对象的状态改变时,所有依赖于它的对象都会得到通知并自动更新。还有策略模式(Strategy),它定义了...

    java设计模式

    26.3.4 状态模式的注意事项 26.4 最佳实践 第27章 解释器模式 27.1 四则运算你会吗 27.2 解释器模式的定义 27.3 解释器模式的应用 27.3.1 解释器模式的优点 27.3.2 解释器模式的缺点 27.3.3 解释器模式使用的场景 ...

    Java设计模式-第22章-观察者模式.ppt

    Java设计模式中的观察者模式(Observer Pattern)是一种对象行为型模式,它定义了一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这种模式常用于事件处理和实时...

    C#设计模式_设计模式_C#_

    创建型: 1. 单件模式(Singleton Pattern) 2. 抽象工厂(Abstract Factory) 3. 建造者模式(Builder) 4. 工厂方法模式(Factory Method) 5. 原型模式(Prototype)结构型: 6.... 状态模式(State Pattern)

    23种设计模式(22)java状态模式

    java状态模式 java状态模式是23种设计模式之一,它主要用于解决系统中复杂对象的多种状态转换以及不同状态下行为的封装问题。状态模式将一个对象的状态从该对象中分离出来,封装到专门的状态类中,使得对象状态可以...

    《Java设计模式》电子课件22至27章(程细柱PDF)

    在这个压缩包中,包含了程细柱老师的22至27章的Java设计模式电子课件,涵盖了多种经典的设计模式,如中介者模式、备忘录模式、观察者模式、状态模式、策略模式、模板方法模式和访问者模式。接下来,我们将详细探讨...

    Java24种设计模式,Java24种设计模式,24种设计模式,学会了这24种设计模式,可以打遍天下无敌手,设计模式非常重要

    1、策略模式STRATEGY PATTERN 2、代理模式PROXY PATTERN 3、单例模式SINGLETON PATTERN 4、多例模式MULTITION PATTERN ...19、状态模式 20、原型模式 21、中介者模式 22、解释器模式 23、亨元模式 24、备忘录模式

    设计模式_源代码大全.zip

    状态模式 13.适配器模式 14.备忘录模式 15.组合模式 16.迭代器模式 17.单例模式 18.桥接模式 19.命令模式 20.职责链模式 21.中介者模式 22.享元模式 23.解释器模式 24.访问者模式 ... 相关资料:...

    【Java设计模式】《设计模式之禅》中的23种设计模式.zip

    【Java设计模式】《设计模式之禅》中的23种设计模式.zip 【Java设计模式】《设计模式之禅》中的23种设计模式.zip 【Java设计模式】《设计模式之禅》中的23种...20. 状态模式 21. 解释器模式 22. 享元模式 23. 桥梁模式

    C#设计模式视频21-23

    本系列视频“C#设计模式视频21-23”聚焦于三种行为型设计模式:访问者模式(Visitor Pattern)、策略模式(Strategy Pattern)以及状态模式(State Pattern)。这些模式都是为了提高代码的灵活性、可维护性和可扩展...

    设计模式实例源码

    16. 状态模式:允许对象在内部状态改变时改变它的行为,对象看起来似乎修改了它的类。 17. 观察者模式:定义对象间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 18...

    设计模式PPT.rar

    22第二十二讲备忘录模式 23第二十三讲状态模式 24第二十四讲命令模式 25第二十五讲访问者模式 26第二十六讲开放封闭原则 27第二十七讲单一职责原则 28第二十八讲里氏代换原则 29第二十九讲依赖倒转原则 30第三十讲...

    22种C++设计模式教学材料

    14. 状态模式(State):允许一个对象在其内部状态改变时改变它的行为,看起来好像对象改变了它的类。 15. 策略模式(Strategy):定义了一系列的算法,并将每一个算法封装起来,使它们可以互相替换。策略模式让...

    32种设计模式

    C# 32种设计模式: 创建型: 1. 单件模式(Singleton Pattern) 2. 抽象工厂(Abstract Factory) 3. 建造者模式(Builder) 4. 工厂方法模式(Factory Method) ... 状态模式(State Pattern)

Global site tag (gtag.js) - Google Analytics