- 浏览: 408650 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (318)
- js (20)
- JQuery (2)
- Java (46)
- Oracle (4)
- mysql (21)
- ExtJs (17)
- Excel (2)
- Linux (8)
- Sql (8)
- Jsp (2)
- hibernate (12)
- jbpm (17)
- eclipse (8)
- 名博收藏 (1)
- Junit (2)
- 应用集成 (3)
- web (10)
- jboss (3)
- Rest (3)
- 其它 (7)
- 磁盘分区管理 (1)
- spring (18)
- SSO (4)
- tomcat (4)
- CSS (7)
- MemCached (6)
- EhCache (4)
- weblogic (1)
- apache (6)
- Exception design (1)
- db (1)
- 分析模式 (1)
- jstl (1)
- jsf (0)
- firefox (2)
- MongoDB (4)
- androidpn (1)
- hadoop (1)
- cvs (1)
- 微信公众号 (2)
- 高并发 (4)
- 技术论坛 (1)
- CDN (1)
- JVM (16)
- 加密 (4)
- maven (2)
- jenkins (1)
- hessian (1)
- 大数据处理 (2)
- NIO (0)
- netty (1)
- redis (1)
- git (1)
- Elastic Job (0)
最新评论
-
zgw06629:
或者<pre>aaaabbbbcccc</p ...
javaDoc注释换行 -
ddnzero:
...
StringBuffer换行 -
maosijun:
。。。。
EXT CExt.form.ComboBox选择一次后只剩一个选项 -
ysa198584:
你这有问题,当我的代码出现User.class的时候,反编绎的 ...
java的class文件批量反编译 -
dongj0325:
看到您的博客,很受启发,但还有关于jbpm4.4 timer使 ...
JBPM定时器(Timer)之Repeat属性不能使用变量
一、定义:
1,状态模式允许一个"对象"在其内部状态改变的时候改变其行为。
2,状态模式的角色:
抽象状态,具体状态(一般是几个,每一个状态下有不同的行为,),环境(context)角色(就是对象,什么对象的状态,一般该对象要初始化一个状态,还有改变状态,还有该状态下的行为)
我们打篮球的时候运动员可以有正常状态,不正常状态,和超常状态,现在我们就以我们打篮球时候投篮时候的状态来举例子,
首先我们抽象出状态,以及该状态下的行为,
interface State{
public void shot();
}
然后实现具体状态,我们这里有三个,三种状态三种行为。
不正常
public class NonormalState implements State{
public void shot(){
System.out.println("今天你投篮十中一");
}
}
正常:
public class NormalState implements State{
public void shot(){
System.out.println("今天你投篮十中五");
}
}
超常:
public class SuperState implements State{
public void shot(){
System.out.println("今天你投篮十中十");
}
}
这个时候我们来一个环境,一个运动员,正常情况下是正常状态
public class Player{
private State state=new NormalState();
public void setState(State state){
this.state=state;
}
public void shot(){
state.shot();//这里我感觉是创建型模式的适配器模式,对象适配器。应该就是这样,
}
}
测试这个例子
public class StateTest
{
public static void main(String[] args){
Player player=new Player();
player.shot();//正常下投篮
player.setState(new NonormalState());
player.shot();不正常下投篮
player.setState(new SuperState());
player.shot();超常下投篮
}
}
使用状态模式的好处是每个状态被封装到一个独立的类中,这些类可以独立变化,而主对象中没有繁琐的swich-case语句,并且添加新的状态非常容易,只需要从State派生一个新类即可。
原文:http://hi.baidu.com/kelongxhu/blog/item/f676894ef5f6ec01b3de05bd.html
评论
同意楼上,只能说明楼主对状态模式的认识目前来说只是入门阶段,我觉得状态模式最经典的地方就是将状态的转换过程放到了子类里面而对客户端解耦。
发表评论
-
serialVersionUID的作用
2016-02-29 11:59 424serialVersionUID的作用 简单来说,J ... -
ArrayList实现原理
2015-08-20 09:32 3591. ArrayList概述: A ... -
HashMap实现原理分析
2015-08-20 09:12 514HashMap 目录(?)[+] 1. H ... -
高性能IO模型浅析
2015-08-05 16:42 310高性能IO模型浅析 2014- ... -
JVM调优总结 -Xms -Xmx -Xmn -Xss
2012-07-27 17:31 745http://unixboy.iteye.com/blog/1 ... -
消息总线设计系列之 - 调停者模式
2012-05-28 16:52 1178http://kb.cnblogs.com/a/1200926 ... -
关于Java构造器
2012-04-25 17:27 774关于Java构造器 作者:langm 版权声明:任何获得M ... -
面向对象的三个基本特征
2012-04-25 15:37 600转自: http://www.cnitblog.com/Li ... -
java 继承类 变量、静态变量、构造函数执行顺序
2012-04-18 16:01 841java 继承类 变量、静态变量、构造函数执行顺序 clas ... -
通过分析 JDK 源代码研究 TreeMap 红黑树算法实现
2012-04-03 11:06 732http://www.ibm.com/developerwor ... -
hashtable源码解析
2012-04-01 22:45 679http://wenku.baidu.com/view/f42 ... -
java泛型
2012-03-27 11:27 634http://baike.baidu.com/view/143 ... -
Java中的Enum的使用与分析
2012-03-27 09:38 662Java中的Enum的使用与分析 示例: ... -
使用common-fileUpload制作文件上传(DiskFileItemFactory方式)
2012-02-23 09:50 1095使用common-fileUpload制作文件上传(DiskF ... -
java中静态代码块的用法 static用法详解(摘抄,用断点调试效果很好)
2011-07-23 11:28 1477原文:http://zhangyongbluesky.blog ... -
Java类的static块什么时候执行
2011-07-23 11:18 869http://joes0619.blog.163.com/bl ... -
JAXP(Java API XML Parser)
2011-07-16 14:20 584http://www.cnblogs.com/kelin131 ... -
static块到底什么时候执行?
2011-07-16 10:23 606http://www.iteye.com/topic/1100 ... -
Java Endorsed Standards Override Mechanism
2011-05-20 10:56 980Introduction From time to time ... -
Java 类的热替换 —— 概念、设计与实现
2011-05-19 10:05 683构建基于 Java 的在线升级系统 孙 鸣, 软件 ...
相关推荐
状态模式-State Pattern状态模式-State Pattern【学习难度:,使用频率:】状态模式-State Pattern处理对象的多种状态及其相互
55-Java设计模式之策略模式与状态模式1
java设计模式之-状态模式-实现
java,设计模式中的一种,状态设计模式。
State模式主要解决的是在开发中时常遇到的根据不同的状态需要进行不同的处理操作的问题,而这样的问题,大部分人是采用switch-case语句进行处理的,这样会造成一个问题:分支过多,而且如果加入一个新的状态就需要对...
java设计模式之状态模式入门
博客地址:https://blog.csdn.net/xiaoluo5238/article/details/104592927 完整的代码,就是包名需要注意一下
主要介绍了JAVA 状态模式的的相关资料,文中讲解的非常细致,帮助大家更好的学习理解JAVA 设计模式,感兴趣的朋友可以了解下
java设计模式之状态模式,通过实际生活中的例子说明状态模式的原理。
主要为大家详细介绍了23种设计模式之java状态模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
设计模式之状态模式的Java版本实现和UML类图设计
Java 23种设计模式24状态模式.pdf
设计模式 java 状态模式
主要帮助大家轻松掌握Java状态模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
主要介绍了Java设计模式之状态模式(State模式)介绍,本文讲解了何时使用状态模式、如何使用状态模式等内容,需要的朋友可以参考下
26.3.4 状态模式的注意事项 26.4 最佳实践 第27章 解释器模式 27.1 四则运算你会吗 27.2 解释器模式的定义 27.3 解释器模式的应用 27.3.1 解释器模式的优点 27.3.2 解释器模式的缺点 27.3.3 解释器模式使用的场景 ...
java常用设计模式-状态模式
设计模式主要分为三大类: 1.创建型模式:工厂模式、抽象...4.行为型模式:模板方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。
状态模式.rar状态模式.rar之java设计模式
计算机后端-Java-图解java设计模式137 状态模式(2).avi