状态模式很简单,无论是理解,还是实现,都很简单。
一、定义:
1,状态模式允许一个"对象"在其内部状态改变的时候改变其行为。
2,状态模式的角色:
抽象状态,具体状态,环境(context)角色
状态模式的角色比较简单,不用解释了,看名字就能了解。
二、状态模式的实现
1,简单实例
?1![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
public?class?Context
{
?2
????private?State?state;
?3![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
????public?void?sampleOperation()
{
?4
????????state.sampleOperation();
?5
????}
?6![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedSubBlockStart.gif)
????public?void?setState(State?state)
{
?7
????????this.state?=?state;
?8
????}
?9
}
10![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
public?interface?State
{
11
????void?sampleOperation();
12
}
13![](http://www.blogjava.net/Images/OutliningIndicators/ExpandedBlockStart.gif)
public?class?ConcreteState?implements?State?
{
14
????public?void?sampleOperation();
15
}
2、状态模式的经典实现
Tcp就是状态模式的一个经典实现:TcpConnect 他有三个状态,TcpEstablished? TcpListen? TcpClosed
TcpConnect的功能会跟着状态的改变而改变。或是Established,或是Listen,或是Closed
三、状态模式的与策略模式,看到上边的部分,很容易让人想到策略模式,这两个模式有什么区别呢?如何使用
策略模式:
1,当一个环境角色选择了一个具体的策略,那么在整个环境类的生命周期都不会改变
2,策略模式的环境自己选择一个具体的策略
3,策略模式并不明确告诉客户端它所选择的具体策略是什么,对客户是黑箱。
状态模式:
1,在整个环境类的生命周期中会有明显的状态改变。
2,状态模式是被外在原因放入一个策略
3,状态模式明显的告诉客户端当前的状态,对客户是白箱。
分享到:
相关推荐
java设计模式之-状态模式-实现
java设计模式之状态模式入门
博客地址:https://blog.csdn.net/xiaoluo5238/article/details/104592927 完整的代码,就是包名需要注意一下
状态模式-State Pattern状态模式-State Pattern【学习难度:,使用频率:】状态模式-State Pattern处理对象的多种状态及其相互
JAVA-设计模式-行为型模式-状态模式
java,设计模式中的一种,状态设计模式。
java常用设计模式-状态模式
设计模式(Design pattern)代表了最佳的实践,通常被有经验的面向...设计模式是软件开发人员在软件开发过程中面临的一般问题的解决方案。这些解决方案是众多软件开发人员经过相当长的一段时间的试验和错误总结出来的。
策略模式和状态模式都是 Java 设计模式中的重要组成部分,它们可以帮助我们解决复杂的问题,使得代码更加灵活和可维护。在实际工作中,了解和应用这些设计模式对于提高开发效率和代码质量是非常重要的。
包括策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、解释器模式等。这些模式涉及到算法选择、事件处理、异步通信等多种软件设计问题。 设计模式不仅仅...
共有11种,分别是策略模式、模板方法模式、观察者模式、迭代器模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式和解释器模式。 在本资源中,我们还对每种设计模式进行了详细的介绍和分析...
基于java程序语言的设计java模式课程 23-状态模式(共29页).pptx 基于java程序语言的设计java模式课程 24-策略模式(共22页).pptx 基于java程序语言的设计java模式课程 25-模板方法模式(共24页).pptx 基于java...
Java设计模式详解 Java设计模式是前辈们对代码开发经验的总结,是解决特定问题的一系列套路。它不是语法规定,而是一套用来提高代码可复用性、可维护性、... * 状态模式 * 访问者模式 * 中介者模式 * 解释器模式
1.1 创建型模式 4 1.1.1 工厂方法 4 1.1.2 抽象工厂 6 1.1.3 建造者模式 10 1.1.4 单态模式 13 1.1.5 原型模式 15 ...1.3.8 状态模式 58 1.3.9 策略模式 61 1.3.10 模板方法 63 1.3.11 访问者模式 65
在备忘录模式里,一个备忘录是一个对象,它存储另一个对象(备忘录的原发器)在某个瞬间的内部状态。备忘的目的就是为了以后在需要的时候,可以将原发器对象的状态恢复(undo/rollback)到备忘录所保存的状态。 备忘...
java模式之备忘录模式主要用于保存进度状态。保证高内聚低耦合。
计算机后端-Java-图解java设计模式136 状态模式(1)-.avi
State模式主要解决的是在开发中时常遇到的根据不同的状态需要进行不同的处理操作的问题,而这样的问题,大部分人是采用switch-case语句进行处理的,这样会造成一个问题:分支过多,而且如果加入一个新的状态就需要对...
计算机后端-Java-图解java设计模式138 状态模式(3)-借.avi
Java EJB中有、无状态SessionBean的两个例子 两个例子,无状态SessionBean可会话Bean必须实现SessionBean,获取系统属性,初始化JNDI,取得Home对象的引用,创建EJB对象,计算利息等;在有状态SessionBean中,用累加...