博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Java设计模式菜鸟系列(十三)建模和实现状态模式
阅读量:5023 次
发布时间:2019-06-12

本文共 1187 字,大约阅读时间需要 3 分钟。

转载请注明出处:

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

一、uml建模:

二、代码实现

/** * 演示样例:状态模式-- 一个对像有不同的状 态,不同的状态相应不同的行为 *  * 以下四则运算为例 */interface State {	public double operate(double num1, double num2);}/** * 加法 */class AddOperator implements State {	@Override	public double operate(double num1, double num2) {		return num1 + num2;	}}/** * 减法 */class SubOperator implements State {	@Override	public 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));	}}

三、总结

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

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

转载于:https://www.cnblogs.com/zfyouxi/p/4824296.html

你可能感兴趣的文章
clojure-emacs-autocomplete
查看>>
一个自己写的判断2个相同对象的属性值差异的工具类
查看>>
10 华电内部文档搜索系统 search03
查看>>
[HIHO1149]回文字符序列(dp)
查看>>
[HDU1402]A * B Problem Plus(FFT)
查看>>
[CF803C] Maximal GCD(gcd,贪心,构造)
查看>>
逆时针旋转的矩阵变换
查看>>
第10周15/16/17
查看>>
【数据库】SQL两表之间:根据一个表的字段更新另一个表的字段
查看>>
四六级作文常见错误解析(转载)
查看>>
Tomcat
查看>>
./是当前目录 ../是当前的上一级目录。上上级就是../../一般绝对路径时候常用...
查看>>
linux支持FTP和SFTP服务【1】
查看>>
树的递归与非递归遍历方法
查看>>
每天一个Linux命令(6):rmdir命令
查看>>
oracle连接的三个配置文件(转)
查看>>
Vim配置文件(Vimrc)
查看>>
RecyclerView 局部刷新(获取viewHolder 去刷新)
查看>>
PHP表单(get,post)提交方式
查看>>
使用vbs或者bat脚本修改IE浏览器安全级别和选项
查看>>