`
zhengjun147
  • 浏览: 14594 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

java state模式

 
阅读更多
1.静态主调函数

package com;
public class Test {  
	public static void main(String[] args)
	{	   
		State state = new StateA();
		StateManager sm = new StateManager(state);
		for(int i=0;i<4;i++)
		{
			state = sm.nextState();
			System.out.print(":"+state);
			if(state == null)
			{
				System.out.print("-->");
			}
			sm.nextStep();
		}
	}
}

2.State接口类

package com;

public interface State
{
	public void lastStep(StateManager s);
	public void nextStep(StateManager s);

}

3.状态管理类

package com;

public class StateManager 
{

	private State state;

	public StateManager(State initState)
	{
		this.state = initState;
	}

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

	//下一步
	public void nextStep()
	{
		if(this.state != null)
			this.state.nextStep(this);
	}

	//上一步
	public void lastStep()
	{
		if(this.state != null)
			this.state.lastStep(this);
	}

	//返回下一个状态
	public State nextState()
	{
		return this.state;
	}
}

4.状态类

package com;

public class StateA implements State
{
	public void lastStep(StateManager s)
	{
		s.setState(new StateC());
	}

	public void nextStep(StateManager s)
	{    
		s.setState(new StateB());
	}

	public String toString() 
	{
		return "State A";
	}
}

package com;

public class StateB implements State
{
	public void lastStep(StateManager s)
	{
		s.setState(new StateA());
	}
	
	public void nextStep(StateManager s)
	{
		s.setState(new StateC());
	}
   
	public String toString()
	{
		return "State B";
	}
}

package com;
public class StateC implements State
{
	public void lastStep(StateManager s) 
	{  
		s.setState(new StateB());
	}
	public void nextStep(StateManager s)
	{
		s.setState(new StateA());
	}
	
	public String toString() 
	{
		return "State C";
	}
}

  4. 总结:

    (1) 采用interface实现多继承,加入管理类,方便状态切换

    (2)应用场景:

         1、不同的状态(可能会对应相应的行为),

         2、不同的行为;  间反复进行切换,则应优先考虑状态模式。 

分享到:
评论

相关推荐

    试谈java设计模式之State.pdf

    Java 设计模式之 State 模式详解 State 模式是 Java 设计模式的一种,用于解决状态切换问题。当对象的状态改变时,对象的行为也随之改变。State 模式将状态和行为分离,实现了状态切换的灵活性和可扩展性。 定义:...

    试谈java设计模式之State.docx

    Java 设计模式之 State 模式 State 模式是一种行为型设计模式,它允许对象在其内部状态改变时改变其行为。该模式的主要思想是将对象的状态和行为分离,使用不同的状态子类来实现不同的行为。 何时使用 State 模式...

    23种java设计模式.pdf

    包括 Iterator(迭代模式)、Template(模板模式)、Chain of Responsibility(责任链模式)、Memento(纪念品模式)、Mediator(中介模式)、Interpreter(解释器模式)、Strategy(策略模式)、State(状态模式)...

    JAVA设计模式之行为模式

    这是JAVA设计模式中属于行为模式的部分,包括Template(模板模式)、Chain of Responsibility(责任链模式)、Memento(纪念品模式)、Mediator(中介模式)、Strategy(策略模式)、State 、Observer(观察者模式)、Visitor...

    《java设计模式》课后习题模拟试题解答——刘伟.zip

    **行为型模式**:包括策略(Strategy)、模板方法(Template Method)、观察者(Observer)、迭代器(Iterator)、访问者(Visitor)、责任链(Chain of Responsibility)、命令(Command)、备忘录(Memento)、...

    java设计模式之State.pdf

    在Java中,State模式通常通过创建一系列的子类来表示不同的状态,并让每个子类实现特定状态下的行为。下面将详细讨论State模式的原理、适用场景以及如何在Java中实现。 State模式的核心思想是将状态相关的操作封装...

    java设计模式之State.docx

    Java设计模式中的State模式是一种行为设计模式,它允许对象在其内部状态改变时改变它的行为。State模式的核心思想是将状态相关的代码封装到独立的对象中,这样可以使得对象在其状态改变时,表现出不同的行为,而无需...

    java 设计模式之状态模式

    在Java中,状态模式通常通过定义不同的状态类和一个上下文类来实现,其中上下文类持有状态对象并调用其方法来响应外部请求。 ## 一、模式介绍 状态模式的核心是将对象的行为与其当前状态关联起来。当对象的状态...

    《Java设计模式》课后答案-刘伟.rar

    行为型设计模式如策略(Strategy)、模板方法(Template Method)、观察者(Observer)、命令(Command)、迭代器(Iterator)、访问者(Visitor)、状态(State)、职责链(Chain of Responsibility)、解释器...

    Java设计模式刘伟书本中模拟考试答案

    7. 简单工厂(Simple Factory)、建造者(Builder)、外观(Facade)、享元(Flyweight)、职责链(Chain of Responsibility)、解释器(Interpreter)、状态(State)、访问者(Visitor)模式等: 这些模式都是在...

    试谈java设计模式之State.doc

    Java设计模式中的State模式是一种行为设计模式,它允许对象在其内部状态改变时改变它的行为。State模式的核心思想是封装可能改变的行为到相应的状态对象中,让对象在其内部状态改变时可以调用不同的行为方法,而不是...

    java设计模式PPT

    包括策略模式(Strategy)、模板方法模式(Template Method)、观察者模式(Observer)、迭代器模式(Iterator)、命令模式(Command)、责任链模式(Chain of Responsibility)、备忘录模式(Memento)、状态模式...

    java设计模式(疯狂java联盟版)

    行为型模式如策略(Strategy)、模板方法(Template Method)、观察者(Observer)、迭代器(Iterator)、访问者(Visitor)、责任链(Chain of Responsibility)、命令(Command)、备忘录(Memento)、解释器...

    JAVA设计模式-chm版

    包括责任链模式(Chain of Responsibility)、命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、中介者模式(Mediator)、备忘录模式(Memento)、观察者模式(Observer)、状态模式...

    JAVA设计模式

    16. **状态模式(State)** 状态模式允许对象在其内部状态改变时改变它的行为,对象看起来好像修改了它的类。Java中,很多游戏状态管理就使用了状态模式。 17. **策略模式(Strategy)** 策略模式定义了一系列...

    [Java设计模式(第2版)(Design.Patterns.in.Java).John.Metsker

    第22章 状态(state)模式 193 第23章 策略(strategy)模式 204 第24章 命令(command)模式 213 第25章 解释器(interpreter)模式 221 第26章 扩展型模式介绍 236 第27章 装饰器(decorator)模式 242 第28章 迭代器...

    java 设计模式之State(状态模式)

    Java 设计模式之 State(状态模式) Java 设计模式之 State(状态模式)是行为型模式之一,主要解决的问题是当一个对象的行为取决于它的状态,并且它需要在运行时刻根据不同的状态对其行为进行改变时,如何对其进行...

    Java与模式(阎宏著)源码

    4. **行为型模式**:这些模式关注对象间如何交互和分配责任,如命令模式(Command)、解释器模式(Interpreter)、迭代器模式(Iterator)、备忘录模式(Memento)、观察者模式(Observer)、状态模式(State)、...

    Java设计模式 设计模式介绍

    章节介绍:1、爪哇语言结构性模式之变压器模式介绍 2、爪哇语言抽象工厂创立性模式介绍 3、工厂方法创立...10、设计模式之State 11、设计模式之Facade(外观) 12、设计模式之Interpreter(解释器) 13、设计模式之Visitor

Global site tag (gtag.js) - Google Analytics