`
bolan392
  • 浏览: 274568 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

十三、状态模式

 
阅读更多

   状态模式,当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中。

 

 

 

 

State

public abstract class State {

	public abstract void handle(Context context);

}

 

StateA

public class StateA extends State {

	public void handle(Context context){
		context.state = new StateB();
	}

}

 

StateB

public class StateB extends State {

	public void handle(Context context){

		context.state = new StateA();

	}

}

 Context

public class Context {

	public State state;

	public Context(State state){
		this.setState(state);
	}

	public void setState(State state){
		this.state = state;
		System.out.println("当前状态:" + state);
	}

	public State getState(){
		return this.state;
	}

	public void request(){
		state.handle(this);
	}

}

 

Client

class Client 
{
	public static void main(String[] args) 
	{
		Context c = new Context(new StateA());

		c.quest();
		c.quest();
		c.quest();
		c.quest();

	}
}

 

 

 

 

 

分享到:
评论

相关推荐

    23种设计模式项目实例

    创建型模式,共五种:工厂方法模式、抽象工厂模式、...行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。

    设计模式PPT.rar

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

    java版本二十三种设计模式.zip

    <!-- TOC --> - 23种设计模式 - 工厂方法模式(Factory Method) - 抽象工厂模式(Abstract Factory) - 单例模式(Singleton) - 建造者模式(Builder) - 原型模式(Prototype) - 代理模式(Proxy) ... - 状态模式(S

    C++设计模式

    (十二)状态模式 32 (十三)适配器模式 34 (十四)备忘录模式 37 (十五)组合模式 39 (十六)迭代器模式 45 (十七)单例模式 46 (十八)桥接模式 47 (十九)命令模式 49 (二十)责任链模式 52 (二十一)...

    设计模式-7种开发语言(C#、JAVA、JavaScript、C++、Python、Go、PHP).pdf

    24种设计模式的入门,整合7种开发语言的代码示例。 ...第一节 设计模式:学习顺序 ...第二十节 状态模式 第二十一节 访问者模式 第二十二节 原型模式 第二十三节 享元模式 第二十四节 责任链模式 第二十五节 解释器模式

    Head First 设计模式 JAVA源码

    所有的设计模式Java实现。...第二十四讲:状态模式 第二十五讲:命令模式 第二十六讲:开放-封闭原则 第二十七讲:里氏转换原则 第二十八讲:依赖倒转原则 第二十九讲:迪米特法则 第三十讲:设计模式总结

    二十三种设计模式【PDF版】

    设计模式之 Memento(注释状态?) 很简单一个模式,就是在内存中保留原来数据的拷贝. 设计模式之 Interpreter(解释器) 主要用来对语言的分析,应用机会不多. 设计模式之 Visitor(访问者) 访问者在进行访问时,完成...

    01-制造工具的工厂模式(1).html

    在书中,作者们将这二十三种设计模式分成了三类,分别是...状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( Interpreter ) 书中通过一幅图,剖析了这二十三种设计模式的关系。

    09-通过容器实现的外观模式(2).html

    在书中,作者们将这二十三种设计模式分成了三类,分别是...状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( Interpreter ) 书中通过一幅图,剖析了这二十三种设计模式的关系。

    00-初探 Laravel 和其中的设计模式(3).html

    在书中,作者们将这二十三种设计模式分成了三类,分别是...状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( Interpreter ) 书中通过一幅图,剖析了这二十三种设计模式的关系。

    程序设计模式作业十三(行为型模式三)1

    具体主题(Concrete Subject)角色:也叫具体目标类,它实现抽象目标中的通知方法,当具体主题的内部状态发生改变时,通知所有注册模式结构行为型模式(三

    12-附录 1 设计模式的七大原则(1).html

    在书中,作者们将这二十三种设计模式分成了三类,分别是...状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( Interpreter ) 书中通过一幅图,剖析了这二十三种设计模式的关系。

    07-使用代理快速接入第三方库(1).html

    在书中,作者们将这二十三种设计模式分成了三类,分别是...状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( Interpreter ) 书中通过一幅图,剖析了这二十三种设计模式的关系。

    03-查询语句建造器(1).html

    在书中,作者们将这二十三种设计模式分成了三类,分别是...状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( Interpreter ) 书中通过一幅图,剖析了这二十三种设计模式的关系。

    02-控制反转和服务容器(1).html

    在书中,作者们将这二十三种设计模式分成了三类,分别是...状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( Interpreter ) 书中通过一幅图,剖析了这二十三种设计模式的关系。

    08-责任链和管道的协作(1).html

    在书中,作者们将这二十三种设计模式分成了三类,分别是...状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( Interpreter ) 书中通过一幅图,剖析了这二十三种设计模式的关系。

    11-回顾和总结(1).html

    在书中,作者们将这二十三种设计模式分成了三类,分别是...状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( Interpreter ) 书中通过一幅图,剖析了这二十三种设计模式的关系。

    04-通过策略选择驱动(1).html

    在书中,作者们将这二十三种设计模式分成了三类,分别是...状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( Interpreter ) 书中通过一幅图,剖析了这二十三种设计模式的关系。

    10-基于装饰器的日志写入器(1).html

    在书中,作者们将这二十三种设计模式分成了三类,分别是...状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( Interpreter ) 书中通过一幅图,剖析了这二十三种设计模式的关系。

    05-容易被忽略的迭代器(1).html

    在书中,作者们将这二十三种设计模式分成了三类,分别是...状态模式( State ) 访问者模式( Visitor ) 中介者模式( Mediator ) 解释器模式( Interpreter ) 书中通过一幅图,剖析了这二十三种设计模式的关系。

Global site tag (gtag.js) - Google Analytics