- 浏览: 425074 次
- 性别:
- 来自: 北京
-
文章分类
- 全部博客 (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 456serialVersionUID的作用 简单来说,J ... -
ArrayList实现原理
2015-08-20 09:32 3971. ArrayList概述: A ... -
HashMap实现原理分析
2015-08-20 09:12 545HashMap 目录(?)[+] 1. H ... -
高性能IO模型浅析
2015-08-05 16:42 348高性能IO模型浅析 2014- ... -
JVM调优总结 -Xms -Xmx -Xmn -Xss
2012-07-27 17:31 785http://unixboy.iteye.com/blog/1 ... -
消息总线设计系列之 - 调停者模式
2012-05-28 16:52 1236http://kb.cnblogs.com/a/1200926 ... -
关于Java构造器
2012-04-25 17:27 801关于Java构造器 作者:langm 版权声明:任何获得M ... -
面向对象的三个基本特征
2012-04-25 15:37 648转自: http://www.cnitblog.com/Li ... -
java 继承类 变量、静态变量、构造函数执行顺序
2012-04-18 16:01 889java 继承类 变量、静态变量、构造函数执行顺序 clas ... -
通过分析 JDK 源代码研究 TreeMap 红黑树算法实现
2012-04-03 11:06 795http://www.ibm.com/developerwor ... -
hashtable源码解析
2012-04-01 22:45 710http://wenku.baidu.com/view/f42 ... -
java泛型
2012-03-27 11:27 715http://baike.baidu.com/view/143 ... -
Java中的Enum的使用与分析
2012-03-27 09:38 698Java中的Enum的使用与分析 示例: ... -
使用common-fileUpload制作文件上传(DiskFileItemFactory方式)
2012-02-23 09:50 1150使用common-fileUpload制作文件上传(DiskF ... -
java中静态代码块的用法 static用法详解(摘抄,用断点调试效果很好)
2011-07-23 11:28 1525原文:http://zhangyongbluesky.blog ... -
Java类的static块什么时候执行
2011-07-23 11:18 923http://joes0619.blog.163.com/bl ... -
JAXP(Java API XML Parser)
2011-07-16 14:20 656http://www.cnblogs.com/kelin131 ... -
static块到底什么时候执行?
2011-07-16 10:23 679http://www.iteye.com/topic/1100 ... -
Java Endorsed Standards Override Mechanism
2011-05-20 10:56 1027Introduction From time to time ... -
Java 类的热替换 —— 概念、设计与实现
2011-05-19 10:05 718构建基于 Java 的在线升级系统 孙 鸣, 软件 ...
相关推荐
以下是一个简单的Java状态模式实现: ```java // Context接口/抽象类 public interface Context { void request(); void setState(State state); } // State抽象类 public abstract class State { public ...
Java 设计模式之策略模式与状态模式 策略模式是 Java 中的一种设计模式,它主要用于解决系统与第三方接口进行数据交互的问题。当系统需要与多种格式的数据进行交互时,使用策略模式可以很好地解决这个问题。例如,...
状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。在Java中,这种模式常用于处理对象在不同状态下的多种行为,使得代码更加灵活,易于维护和扩展。 状态模式的核心...
状态模式-State Pattern状态模式-State Pattern【学习难度:,使用频率:】状态模式-State Pattern处理对象的多种状态及其相互
在Java设计模式中,状态模式的核心概念包括以下几个部分: 1. **状态(State)**:这是个接口或抽象类,定义了状态对象的公共行为。每个状态都对应一个特定的操作集,这些操作可能会影响对象的状态。 2. **具体...
状态模式是一种行为设计模式,它允许对象在内部状态改变时改变其行为,对象看起来似乎修改了它的类。在这个示例中,我们关注的是如何使用Java实现一个审批流程,特别是涉及二级审批的场景。这个压缩包文件包含了一个...
本篇将探讨两种重要的行为设计模式:责任链模式(Chain of Responsibility Pattern)和状态模式(State Pattern)。 **责任链模式**是一种使多个对象都有机会处理请求的模式,避免请求发送者与接收者之间的耦合。在...
在Java中,状态模式常用于处理对象在不同状态下的多种行为,通过将每种状态封装为一个单独的类,可以使得代码更加模块化,易于维护和扩展。 在Java中实现状态模式的基本步骤如下: 1. **定义状态接口**:首先,...
java状态模式 java状态模式是23种设计模式之一,它主要用于解决系统中复杂对象的多种状态转换以及不同状态下行为的封装问题。状态模式将一个对象的状态从该对象中分离出来,封装到专门的状态类中,使得对象状态可以...
以下是一个简单的Java状态模式的例子: 1. **抽象状态(State)** ```java public interface State { void request(Context context); } ``` 2. **具体状态A(ConcreteStateA)** ```java public class ...
在Java中,状态模式通常通过实现接口或者继承抽象类来实现状态的切换。 在实际生活中,一个典型的例子是自动贩卖机。自动贩卖机有多种状态,如等待投币、等待选择商品、等待出货和交易完成等。每种状态下,贩卖机的...
在《Java 23种设计模式24状态模式.pdf》中,作者通过详细的讲解和实例,深入探讨了状态模式的概念、动机、结构、分析及应用。 ### 模式动机 状态模式的核心动机在于解决对象状态变化导致的行为变化问题。当一个...
在Java中实现状态模式,我们通常会定义以下几个核心组件: 1. **状态接口(State Interface)**:这是所有具体状态类的抽象,它定义了一组操作,这些操作与对象的行为相关,这些行为可能因状态变化而变化。例如: ...
JAVA 设计模式之状态模式 状态模式是行为型设计模式,主要用于解决对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。该模式允许对象在内部状态发生改变时改变它的行为,对象看起来...
- 状态模式:允许对象在其内部状态改变时改变其行为,看起来像改变了它的类。 - 策略模式:定义一系列的算法,并将每一个算法封装起来,使它们可以互相替换。 - 模板方法模式:定义一个操作中的算法骨架,而将...
在Java中,状态模式通常用于将状态相关的逻辑从对象主体中分离出来,使得对象的行为可以根据其状态动态地更新。 在Java设计模式中,状态模式的核心思想是封装可能改变的对象状态,并将这些状态的行为委托给各自独立...
3. 行为型模式:策略模式、模板方法模式、观察者模式、命令模式、迭代器模式、责任链模式、备忘录模式、状态模式、访问者模式、解释器模式。这些模式关注于对象之间的交互和行为,使代码更具灵活性和可复用性。 在...
* State(状态模式):使用状态机来实现对象的状态转换。 * Observer(观察者模式):使得对象能够观察其他对象的变化。 * Visitor(访问模式):提供了一种方法来访问对象的元素。 * Command(命令模式):使用命令...
例如,观察者模式在事件驱动编程中非常常见,它使得多个对象能监听某个对象的状态变化并作出相应反应。而策略模式则常用于算法的封装和选择,允许在运行时动态切换不同的算法策略。 总的来说,《Java与模式》光盘...
Java 架构设计模式 - 状态模式和模板模式 在软件设计中,了解设计模式非常重要,它可以帮助开发者编写更好的代码,使得系统更加灵活、可维护和可扩展。今天,我们将讨论两种常用的Java设计模式:状态模式和模板模式...