`
samsongbest
  • 浏览: 171517 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

19 行为模式 - 状态(State)模式

 
阅读更多

1.用意

状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。

 

2.类图


 

3.代码

/*
 * 环境角色
 */
public class Context {
	private State state;

	public void sampleOperation() {
		state.sampleOperation();
	}

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

/*
 * 抽象状态
 */
public interface State {
	void sampleOperation();
}


/*
 * 具体状态类A
 */
public class ConcreteStateA implements State {
	public void sampleOperation() {
		S.s("ConcreteState::A");
	}
}


/*
 * 具体状态类B
 */
public class ConcreteStateB implements State {
	public void sampleOperation() {
		S.s("ConcreteState::B");
	}
}


/*
 * 测试类
 */
public class Test {

	public static void main(String[] args) {
		Context c = new Context();
		c.setState(new ConcreteStateA());
		c.sampleOperation();
		c.setState(new ConcreteStateB());
		c.sampleOperation();
	}
}
 

 

z

  • 大小: 46.9 KB
分享到:
评论

相关推荐

    设计模式C++学习之状态模式(State)

    状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。这种模式常用于处理对象的状态变化,并且使代码结构清晰,易于维护。 在C++中,状态模式通常包含以下几个关键...

    java模式-java中的所有模式-java进阶必备···

    状态模式(State)** - **定义**:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 - **应用场景**:行为随状态改变而改变的控制;条件、分支语句的替代者。 - **优缺点**:优点在于...

    设计模式-java实现代码汇总

    20. 状态模式(State):允许对象在其内部状态改变时改变其行为。 21. 策略模式(Strategy):定义一系列算法,并将每个算法封装起来,使它们可以互相替换。 22. 模板方法模式(Template Method):定义一个操作中的...

    JAVA常用设计模式-追美眉技术详解.doc

    状态模式 (State)** - **定义**: 允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。 - **应用场景**: 当对象的行为随着状态的变化而变化时。 - **优缺点**: 优点是能够更好地封装...

    Head.First设计模式--22~39.rar.pdf (C#)

    14. **状态模式**(State):34章介绍了状态模式,它允许对象在其内部状态改变时改变它的行为。C#中,状态模式常用于管理对象的不同状态,使得对象在状态转换时行为随之改变。 15. **策略模式**(Strategy):35章...

    23种设计模式-JAVA语言版.zip

    20. **状态模式(State)**:允许对象在其内部状态改变时改变它的行为,看起来像是改变了它的类。 21. **策略模式(Strategy)**:定义一系列算法,把它们一个个封装起来,并且使它们可以相互替换。 22. **模板...

    设计模式 - 可复用面向对象软件的基础

    11. 状态模式(State):允许对象在其内部状态改变时改变其行为,对象看起来似乎修改了它的类。 12. 备忘录模式(Memento):在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这个状态,以便...

    php 23种设计模式-整理篇.zip

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

    C++11全套设计模式-23种指针的用法(a full DesignPattern -DesignPattern.zip

    20. **状态模式(State)**:允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。C++11的虚函数和状态机可以实现状态模式。 21. **访问者模式(Visitor)**:表示一个作用于某对象结构中的...

    23种设计模式 - 各种模式的学习

    23种设计模式 目录 创建型 1. Factory Method(工厂方法) 2. Abstract Factory(抽象工厂) 3. Builder(建造者) ...行为型 ...21. State(状态) 22. Strategy(策略) 23. Visitor(访问者)

    java的23种设计模式

    20. **状态模式**(State) - **模式名称**:状态模式 - **问题**:对象的行为随着状态的变化而变化。 - **解决方案**:允许对象在其内部状态改变时改变它的行为。 - **效果**:提高了对象的行为灵活性,使得...

    设计模式-可复用面向对象软件的基础(高清)

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

    C#面向对象设计模式纵横谈(视频与源码)

    C#面向对象设计模式纵横谈(22):(行为型模式) State 状态模式 C#面向对象设计模式纵横谈(23):(行为型模式) Strategy 策略模式 C#面向对象设计模式纵横谈(24):(行为型模式) Visitor 访问者模式 C#面向对象设计...

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

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

    HeadFirst设计模式(深入浅出设计模式)-高清

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

    设计模式可复用面向对象软件的基础.zip

    5.8 STATE(状态)—对象行为型模式 201 5.9 STRATEGY(策略)—对象行为型 模式 208 5.10 TEMPLATE METHOD(模板方法) —类行为型模式 214 5.11 VISITOR(访问者)—对象行为型 模式 218 5.12 行为模式的讨论 228 ...

    23种设计模式 (创建型,结构型,行为型)

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

    设计模式:可复用面向对象软件的基础--详细书签版

    5.8 state(状态)—对象行为型模式 201 5.9 strategy(策略)—对象行为型 模式 208 5.10 template method(模板方法) —类行为型模式 214 5.11 visitor(访问者)—对象行为型 模式 218 5.12 行为模式的...

Global site tag (gtag.js) - Google Analytics