java设计模式--行为型模式--状态模式

什么是行为型模式,小编觉得就是对行为的一种描述啦,一种对某种行为模型的定义。

状态模式:

    

 1                                                     状态模式
 2  概述
 3     定义对象间的一种一对多的依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都得到通知并被自动更新。
 4
 5
 6  适用性
 7     1.一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。
 8
 9     2.一个操作中含有庞大的多分支的条件语句,且这些分支依赖于该对象的状态。
10       这个状态通常用一个或多个枚举常量表示。
11       通常,有多个操作包含这一相同的条件结构。
12       State模式将每一个条件分支放入一个独立的类中。
13       这使得你可以根据对象自身的情况将对象的状态作为一个对象,这一对象可以不依赖于其他对象而独立变化。
14
15
16  参与者
17     1.Context
18       定义客户感兴趣的接口。
19       维护一个ConcreteState子类的实例,这个实例定义当前状态。
20
21     2.State
22       定义一个接口以封装与Context的一个特定状态相关的行为。
23
24     3.ConcreteStatesubclasses
25       每一子类实现一个与Context的一个状态相关的行为。

测试代码:

  

 1 public class Test{
 2
 3     public static void main(String[] args) {
 4         Context ctx1 = new Context();
 5         ctx1.setWeather(new Sunshine());
 6         System.out.println(ctx1.weatherMessage());
 7
 8         System.out.println("===============");
 9
10         Context ctx2 = new Context();
11         ctx2.setWeather(new Rain());
12         System.out.println(ctx2.weatherMessage());
13     }
14 }
1 public interface Weather {
2
3     String getWeather();
4 }
 1 public class Context {
 2
 3     private Weather weather;
 4
 5     public void setWeather(Weather weather) {
 6         this.weather = weather;
 7     }
 8
 9     public Weather getWeather() {
10         return this.weather;
11     }
12
13     public String weatherMessage() {
14         return weather.getWeather();
15     }
16 }
1 public class Sunshine implements Weather {
2
3     public String getWeather() {
4         return "阳光";
5     }
6 }
1 public class Rain implements Weather {
2
3     public String getWeather() {
4         return "下雨";
5     }
6 }

说明:一个状态中传入什么具体实现就是什么实现啦。。。感觉这种实现模型挺牛。不停明白中....

 

时间: 2024-11-04 12:05:56

java设计模式--行为型模式--状态模式的相关文章

设计模式(行为型)之状态模式(State Pattern)

PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN.因为CSDN也支持MarkDown语法了,牛逼啊! [工匠若水 http://blog.csdn.net/yanbober] 阅读前一篇<设计模式(行为型)之模板方法模式(Template Method Pattern)>http://blog.csdn.net/yanbober/article/details/45501715 概述 状态模式用于解决系统中复杂对象的状态转换以及不同状态下行为的封装问题.当系统中

JAVA设计模式十二--State(状态模式)

状态模式(State Pattern)是设计模式的一种,属于行为模式. 定义(源于Design Pattern):当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类. 状态模式主要解决的是当控制一个对象状态的条件表达式过于复杂时的情况.把状态的判断逻辑转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化.意图:允许一个对象在其内部状态改变时改变它的行为适用场景: 1.一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为. 2.一个操作中含有庞大的多分支结

Java设计模式菜鸟系列(十三)状态模式建模与实现

转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39829859 状态模式(State):允许对象在内部状态改变时改变它的行为,对象看起来好像修改了它的类.状态模式说白了就是一个对像有不同的状态,不同的状态对应不同的行为,它其实是对switch case这样的语句的拓展. 一.uml建模: 二.代码实现 /** * 示例:状态模式-- 一个对像有不同的状 态,不同的状态对应不同的行为 * * 下面四则运算为例 */ interface S

设计模式(行为型)之模板方法模式(Template Method Pattern)

PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN.因为CSDN也支持MarkDown语法了,牛逼啊! [工匠若水 http://blog.csdn.net/yanbober] 阅读前一篇<设计模式(行为型)之命令模式(Command Pattern)>http://blog.csdn.net/yanbober/article/details/45500113 概述 模板方法模式是一种基于继承的代码复用,它是一种类行为型模式:是结构最简单的行为型设计模式,在其结构

Java设计模式(十) 备忘录模式 状态模式

(十九)备忘录模式 备忘录模式目的是保存一个对象的某个状态,在适当的时候恢复这个对象. class Memento{ private String value; public Memento(String value){ this.value = value; } public String getValue() { return value; } public void setValue(String value) { this.value = value; } } class Storage

java设计模式--行为型模式--迭代模式

1 迭代器模式 2 概述 3 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子. 4 5 6 适用性 7 1.访问一个聚合对象的内容而无需暴露它的内部表示. 8 9 2.支持对聚合对象的多种遍历. 10 11 3.为遍历不同的聚合结构提供一个统一的接口(即,支持多态迭代). 12 13 14 参与者 15 1.Iterator 16 迭代器定义访问和遍历元素的接口. 17 18 2.ConcreteIterator 19 具体迭代器实现迭代器接口.

java设计模式--行为型模式--命令模式

1 命令模式 2 概述 3 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化:对请求排队或记录请求日志,以及支持可撤消的操作. 4 5 6 适用性 7 1.抽象出待执行的动作以参数化某对象. 8 9 2.在不同的时刻指定.排列和执行请求. 10 11 3.支持取消操作. 12 13 4.支持修改日志,这样当系统崩溃时,这些修改可以被重做一遍. 14 15 5.用构建在原语操作上的高层操作构造一个系统. 16 17 18 参与者 19 1.Command 20 声明执行操作的接口.

设计模式(行为型)之备忘录模式(Memento Pattern)

PS一句:最终还是选择CSDN来整理发表这几年的知识点,该文章平行迁移到CSDN.因为CSDN也支持MarkDown语法了,牛逼啊! [工匠若水 http://blog.csdn.net/yanbober] 阅读前一篇<设计模式(行为型)之中介者模式(Mediator Pattern)>http://blog.csdn.net/yanbober/article/details/45533335 概述 备忘录模式提供了一种状态恢复的实现机制,使得用户可以方便地回到一个特定的历史步骤,当新的状态无

Java设计模式(六)合成模式 享元模式

(十一)合成模式 Composite 合成模式是一组对象的组合,这些对象可以是容器对象,也可以是单对象.组对象允许包含单对象,也可以包含其他组对象,要为组合对象和单对象定义共同的行为.合成模式的意义是 保证客户端调用单对象与组合对象的一致性. class TreeNode{ private String name; private TreeNode parent; private Vector<TreeNode> children = new Vector<TreeNode>();

java设计模式--观察者模式和事件监听器模式

文章转载于:http://www.java2000.net/p9452 复习设计模式,看到observer观察者模式,说法是该模式和iterator迭代器模式类似已经被整合进jdk,但是jdk提供了两种接口: 一.java.util.Observer -- 观察者接口 对应: java.util.Observable --受查者根类 二.java.util.EventListener -- 事件监听/处理接口 对应: java.util.EventObject -- 事件(状态)对象根类 研究了