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

状态模式(State Pattern)

阅读更多

一、状态模式需要两种类型实体参与:

     1、状态管理器

     2、状态抽象类或接口

 

 

二、源码

     1、状态抽象类

public abstract class State {
	public abstract void turn(Context context);
}

 

     2、状态子类

public class East extends State {
	public void turn(Context context){
		context.setState(new South());
		System.out.println("方向转变:东到南");
	}
}

 

public class South extends State {
	public void turn(Context context){
		context.setState(new West());
		System.out.println("方向转变:南到西");
	}
}

 

public class West extends State {
	public void turn(Context context){
		context.setState(new North());
		System.out.println("方向转变:西到北");
	}
}

 

public class North extends State {
	public void turn(Context context){
		context.setState(new East());
		System.out.println("方向转变:北到东");
	}
}

 

     3、状态管理器

public class Context {
	private State state;

	public State getState() {
		return state;
	}

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

	public void turn(){
		this.state.turn(this);
	}
}

 

     4、测试类

public class Test {
	public static void main(String[] args) {
		Context c = new Context();
		c.turn(); //东到南
		c.turn(); //南到西
		c.turn(); //西到北
		c.turn(); //北到东
	}
}

 

  • 大小: 25.2 KB
0
0
分享到:
评论

相关推荐

    状态模式 State Pattern

    在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。 在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。

    JackChan1999#Java-Degisn-Patterns#状态模式-State Pattern1

    状态模式-State Pattern状态模式-State Pattern【学习难度:,使用频率:】状态模式-State Pattern处理对象的多种状态及其相互

    Head First 设计模式 (十) 状态模式(State pattern) C++实现

    Head First 设计模式 (十) 状态模式(State pattern) C++实现

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

    允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它所属的类。

    状态模式(State Pattern)是一种行为设计模式

    状态模式

    nevstop#LabVIEW-Design-Pattern#状态模式(State Pattern)1

    状态模式定义Allow an object to alter its behavior when its internal state changes. The

    《设计模式》实战---状态模式(State Pattern)

    NULL 博文链接:https://zhangyan19870108.iteye.com/blog/1992409

    StatePattern.unitypackage

    StatePattern.unitypackage是一个unity演示的状态模式。有需要的同学可以自行下载。

    设计模式State模式源码

    State模式在实际使用中比较多,适合"状态的切换".因为我们经常会使用If elseif else 进行状态切换, 如果针对状态的这样判断切换反复出现,我们就要联想到是否可以采取State模式了. 不只是根据状态,也有根据属性.如果...

    C#版 24种设计模式

    备忘录模式(Memento Pattern) 策略模式(Strategy Pattern) 抽象工厂模式(Abstract Factory Pattern) 代理模式(Proxy Pattern) ...装饰模式(Decorator Pattern) 状态模式(State Pattern) 组合模式(Composite Pattern)

    状态模式Java实现示例

    状态模式(State Pattern)是一种行为设计模式,它允许一个对象在其内部状态改变时改变它的行为。这个对象看起来好像修改了它的类。状态模式主要解决的是当一个对象的行为依赖于它的状态时,如何将这些状态从对象中...

    用Java实现23种设计模式

    状态模式(State Pattern) 空对象模式(Null Object Pattern) 策略模式(Strategy Pattern) 模板模式(Template Pattern) 访问者模式(Visitor Pattern) 4. J2EE 模式 MVC 模式(MVC Pattern) 业务代表...

    python 状态模式(示例)

    设计模式——状态模式状态模式(State Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类应用场景:当控制一个对象的状态转换的条件表达式过于复杂时,把状态的判断逻辑转移到表示不同...

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

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

    C#设计模式(23种设计模式)

    创建型: 1. 单件模式(Singleton Pattern) 2. 抽象工厂(Abstract Factory) 3.... 4.... 5.... 6. 适配器模式(Adapter Pattern) 7. 桥接模式(Bridge Pattern) ... 状态模式(State Pattern) @Author kwming

    设计模式PPT

    创建型模式用来处理对象的创建过程,主要包含以下5种设计模式: ... 状态模式(State Pattern)  策略模式(Strategy Pattern)  模板方法模式(Template Method Pattern)  访问者模式(Visitor Pattern)

    C++设计模式(Design Pattern)范例源代码

    23种设计模式(Design Pattern)的C++实现范例,包括下面列出的各种模式,代码包含较详细注释。另外附上“设计模式迷你手册....状态模式(State) 策略模式(Strategy) 模板方法模式(Template Method) 访问者模式(Visitor)

    状态模式代码

    在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。 在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。

    33种JAVA设计模式DEMO

    状态模式(State Pattern) 空对象模式(Null Object Pattern) 策略模式(Strategy Pattern) 模板模式(Template Pattern) 访问者模式(Visitor Pattern) 4 J2EE 模式 这些设计模式特别关注表示层。这些模式是由...

Global site tag (gtag.js) - Google Analytics