转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39829859


状态模式(State):同意对象在内部状态改变时改变它的行为,对象看起来好像改动了它的类。状态模式说白了就是一个对象有不同的状态。不同的状态相应不同的行为。它事实上是对switch case这种语句的拓展。

一、uml建模:



二、代码实现

/*** 演示样例:状态模式-- 一个对像有不同的状 态,不同的状态相应不同的行为* * 以下四则运算为例*/interface State {public double operate(double num1, double num2);
}/*** 加法*/
class AddOperator implements State {@Overridepublic double operate(double num1, double num2) {return num1 + num2;}
}/*** 减法*/
class SubOperator implements State {@Overridepublic double operate(double num1, double num2) {return num1 - num2;}
}/*** 学生*/
class Student {private State state;public Student(State state) {this.state = state;}/*** 设置状态*/public void setState(State state) {this.state = state;}public double operate(double num1, double num2) {return state.operate(num1, num2);}}/*** client測试类* * @author Leo*/
public class Test {public static void main(String[] args) {Student s1 = new Student(new AddOperator());System.out.println(s1.operate(12, 23));/*** 改变状态,即改变了行为 --> 加法运算变成了减法运算*/s1.setState(new SubOperator());System.out.println(s1.operate(12, 23));}
}


三、总结

封装基类状态的行为,并将行为托付到当前状态。



版权声明:本文博主原创文章,博客,未经同意不得转载。

Java设计模式菜鸟系列(十三)建模和实现状态模式相关推荐

  1. java 建模_Java设计模式菜鸟系列(两)建模与观察者模式的实现

    观察者(Observer)模式定义:在对象之间定义了一对多的依赖关系,这样一来.当一个对象改变状态时,依赖它的对象都会收到通知并自己主动跟新.Java已经提供了对观察者Observer模式的默认实现, ...

  2. Java设计模式菜鸟系列(四)工厂方法模式建模与实现

    转载请注明出处:http://blog.csdn.net/lhy_ycu/article/details/39760895 工厂方法模式(Factory Method) 工厂方法:顾名思义,就是调用工 ...

  3. 【每天一个java设计模式(二十三)】 - 访问者模式

    在访问者模式中,我们使用了一个访问者类,它改变了元素类的执行算法.通过这种方式,元素的执行算法可以随着访问者改变而改变.这种类型的设计模式属于行为型模式.根据模式,元素对象已接受访问者对象,这样访问者 ...

  4. Unity 自主学习之用设计模式模拟王者荣耀 (一)-- 状态模式实现张飞开大

    前言:笔者最近由于学习了一些开发模式,觉得里面有很多模式非常有趣,而正好本人又喜欢玩儿王者荣耀,所以就想着复制一下,看能不能做出来,笔者并不是大牛,这个只是个人对于设计模式的应用学习,只是目标是为了实 ...

  5. java责任链模式做优惠_Java设计模式菜鸟系列(十八)责任链模式建模与实现

    责任链模式(ChainOfResponsibility): 有多个对象,每个对象持有下一个对象的引用,形成一条链,请求在这条链上传递,直到某一对象决定处理该请求,但是发出者并不清楚最终哪个对象会处理该 ...

  6. Java 设计模式最佳实践:二、创建型模式

    原文:Design Patterns and Best Practices in Java 协议:CC BY-NC-SA 4.0 贡献者:飞龙 本文来自[ApacheCN Java 译文集],采用译后 ...

  7. Java设计模式圣经连载(05)-代理模式

    代理模式是一种非常重要的设计模式,在Java语言中有着广泛的应用,包括Spring AOP的核心设计思想,都和代理模式有密切关系. 代理模式主要分两种:一种是静态代理,一种是动态代理.两种代理方式的实 ...

  8. Java设计模式(3 / 23):装饰者模式

    文章目录 定义 案例1:三点几啦 首次尝试 再次尝试 设计原则:类应该对扩展开放,对修改关闭 尝用装饰者模式 装饰者模式特征 本例的类图 放码过来 饮料类 HouseBlend DarkRoast E ...

  9. Java设计模式学习总结(15)——行为型模式之责任链模式

    责任链模式 顾名思义,责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这种类型的设计 ...

最新文章

  1. Saas 平台,多域名,泛域名.如何做分站点的统计之解决方案
  2. 突破Outlook2003附件格式限制
  3. Vue + VueRouter + Vuex + Axios 抓取 GitHub 上的 Issues 来搭建个人博客站点
  4. ios app的真机调试与发布配置
  5. php 正则获取某个div,php正则匹配html中带class的div并选取其中内容的方法
  6. 防SQL注入的最好实现方式是什么?
  7. 15 张图, 把TCP/IP 讲得一清二楚!
  8. 计蒜客——数位反转问题(代码+解析)
  9. 3d打印 开源_Hovalin:开源3D打印小提琴
  10. win10开机密码忘记怎么办|win10登陆密码忘记解决方法
  11. 视觉目标跟踪大牛主页
  12. 《HelloGitHub》第 67 期
  13. 关于工作后定居城市的思考以及房价预测(天涯原创)
  14. 想找个这样的男朋友,要求高吗?
  15. 【推荐】万物兴歇——衰老与寿命的演化
  16. 树的先序/中序/后序遍历
  17. Markdown学习总结笔记(最全的总结)
  18. AVI音视频封装格式学习(五)——h265与PCM合成AVI文件
  19. 创龙TI TMS320C6678 DSP + Xilinx Kintex-7 FPGA的温度传感器、B2B连接器
  20. 这次生日我想写点什么

热门文章

  1. 异常(try...catch...finally、throws、throw)
  2. Microsfot.Web.UI.WebControls.TreeView JavaScript控制方法研究(转)
  3. hdu4940 有上下界的无源可行流判断
  4. 【ijkplayer】编译 Android 版本的 ijkplayer ④ ( 安装 make yasm 软件 | 执行 compile-ffmpeg.sh all 命令编译 ffmpeg )
  5. 【Android 逆向】启动 DEX 字节码中的 Activity 组件 ( 使用 DexClassLoader 获取组件类失败 | 失败原因分析 | 自定义类加载器没有加载组件类的权限 )
  6. 【Android 逆向】应用数据目录 ( Android 应用数据目录 /data/data/package.name | 存放 SharedPreference 的 shared_pref 目录 )
  7. 【鸿蒙 HarmonyOS】界面跳转 ( Page Ability 的 action 标识 | Page Ability 之间的界面跳转及传递数据 | 鸿蒙工程下创建 Module | 代码示例 )
  8. [Spring cloud 一步步实现广告系统] 15. 使用开源组件监听Binlog 实现增量索引准备...
  9. DevOps:软件架构师行动指南(文摘)
  10. 2018-2019-1 20165236 《信息安全系统设计基础》第4周学习总结