`

State模式

阅读更多

State模式主要适用于在不同状态下会有不同的行为产生。即行为的变化追随状态的变化而变化。

如人们的表现行为会随着自己的心情变化而变化。

此时,状态就是心情,心情是阴晴多变的,所以表现行为就随心而动。

当我们接受几个设计模式之后渐渐会发现,很多时候在使用设计模式的时候都是由于可变性引起的,就是要针对这些可变性进行封装,已达到所谓的OCP原则。

package com.wayne.state;

public interface Mood {
	public void action();
}


package com.wayne.state;

public class HappyMood implements Mood {

	public void action() {
		System.out.println("i am happy...");
	}

}


package com.wayne.state;

public class HurtMood implements Mood {

	public void action() {
		System.out.println("i am  so losting ........");
	}

}


package com.wayne.state;

public class Context {
	private Mood mood;

	public Context(Mood mood) {
		this.mood = mood;
	}

	public void action() {
		mood.action();
	}
}


package com.wayne.state;

public class Person {
	public static void main(String args[]) {
		Mood mood = new HappyMood();
		Context cxt = new Context(mood);
		cxt.action();
	}
}

 

分享到:
评论

相关推荐

    设计模式State模式源码

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

    state模式

    state模式 state模式

    Android学习 StateMachine与State模式

    Android中StateMachine机制 对与State改变切换这种常见常用的处理, 只是各个平台框架中处理的方法不同, ...在Android中使用的了StateMachine机制就是一个State模式的应用, StateMachine是非常的强大和精妙。

    C++ State模式

    23种设计模式之十五(行为模式)State模式

    [行为模式] state模式

    NULL 博文链接:https://jacky-dai.iteye.com/blog/960979

    State模式在客户端软件中的应用

    在对一个J2EE项目的重构、增加新功能的过程中,对客户端GUI程序,我们使用了State模式。结果显示,该模式的使用,不但减少了客户端GUI程序的程序规模(LOC),而且,该部分的开发及单元测试时间大大减少,同时,在集成...

    Java设计模式之状态模式(State模式)介绍

    主要介绍了Java设计模式之状态模式(State模式)介绍,本文讲解了何时使用状态模式、如何使用状态模式等内容,需要的朋友可以参考下

    36种最新设计模式整理

    State 模式 Strategy 模式 Template Method 模式 Visitor 模式 Guarded Suspension 模式 Producer Consumer 模式 Worker Thread 模式 Thread-Per-Message 模式 Future 模式 Read-Write-Lock 模式 ...

    设计模式精解-GoF 23种设计模式解析

    设计模式精解-GoF 23 种...3.3 State模式 3.4 Observer模式 3.5 Memento模式 3.6 Mediator模式 3.7 Command模式 3.8 Visitor模式 3.9 Chain of Responsibility模式 3.10 Iterator模式 3.11 Interpreter模式 4 说明

    JAVA设计模式之行为模式 责任链模式和状态模式

    State模式主要解决的是在开发中时常遇到的根据不同的状态需要进行不同的处理操作的问题,而这样的问题,大部分人是采用switch-case语句进行处理的,这样会造成一个问题:分支过多,而且如果加入一个新的状态就需要对...

    C++ State 设计模式 演示源代码

    http://blog.csdn.net/feiyinzilgd/archive/2011/04/05/6302717.aspx (C++ State 设计模式博客)演示源代码。用C++实现并较详细的讲述了Sate模式的意图和工作状态。

    敏捷软件开发:原则、模式与实践

    第一部分 敏捷开发 第1章 敏捷联盟 ...第29章 STATE模式 第30章 ETS框架 附录 附录A UML表示法I:CGI示例 附录B UML表示法II:统计多路复用器 附录C 两上公司的讽刺小品 附录D 源代码就是设计 索引

    ASP.NET设计模式-杨明军译(源码)

    5.1.4 State模式 5.1.5 Strategy模式 5.2 应用企业模式 5.2.1 Specification模式 5.2.2 Composite模式 5.2.3 Layer Supertype模式 5.3 应用设计原则 5.3.1 依赖倒置原则和依赖注入模式 5.3.2 接口分离原则 ...

    敏捷软件开发:原则、模式与实践.pdf

    第Ⅰ部分 敏捷开发 第一章 敏捷实践 ...第二十九章 STATE模式 第三十章 ETS框架 附录 附录A UML表示法Ⅰ:CGI示例 附录B UML表示法Ⅱ:统计多路复用器 附录C 两个公司的讽刺小品 附录D 源代码就是设计 索引

    敏捷软件开发原则、模式与实践 C#版

    OBSERVER——演化至模式 第33章 ABSTRACT SERVER模式、 ADAPTER模式和BRIDGE模式 第34章 PROXY模式和GATEWAY模式:管理第三方API 第35章 VISITOR模式 第36章 STATE模式 第37章 薪水支付案例研究:数据库 第38章 薪水...

    设计模式精解-GoF 23 种设计模式解析附 C++实现源码.pdf

    3.3 State模式...........................................................................................................................87 3.4 Observer模式................................................

    状态模式 State Pattern

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

Global site tag (gtag.js) - Google Analytics