设计模式之状态模式
2016-05-09 11:05
330 查看
总体来说设计模式分为三大类:
创建型模式5种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式7种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式11种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
Demo:遥控器案例
创建型模式5种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。
结构型模式7种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。
行为型模式11种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。
状态模式
避免if-else子句或者switch-case条件判定逻辑Demo:遥控器案例
首先,创建一个接口
public interface State { public void doAction(); }
其次,创建实现类
public class TVStartState implements State { @Override public void doAction() { System.out.println("打开电视机"); } }
public class TVStopState implements State { @Override public void doAction() { System.out.println("关闭电视机"); } }
public class TVContext implements State { private State tvState; public void setState(State state) { this.tvState=state; } public State getState() { return this.tvState; } @Override public void doAction() { this.tvState.doAction(); } }
然后,创建测试类
public class TVRemote { public static void main(String[] args) { TVContext context = new TVContext(); State tvStartState = new TVStartState(); State tvStopState = new TVStopState(); context.setState(tvStartState); context.doAction(); context.setState(tvStopState); context.doAction(); } }
最后,查看输出结果
<php> 打开电视机 关闭电视机 </php>
相关文章推荐
- ALV字段设置更改后,展示不同步的问题
- 网上查了点关于windows注册表的知识,发现基本名词没理解好,于是整理这篇笔记(可能个别地方不准确,先这么理解吧),有了这个理解,再去看网上的文章,就差不读了
- Yii2-redis
- 堆的分配参数
- 软件版本号说明
- get_set.php 类的访问控制
- listview item 展开收起,实例(自创)
- 编写mapreduce程序实例——数据去重
- 多线程的初步理解
- [转]Eclipse下导入外部jar包的3种方式
- 防DDOS攻击SHELL脚本
- 解决Oracle数据库不能导出空表的问题
- HttpUrlConnection发送url请求(后台springmvc)
- 一步一步实现iOS微信自动抢红包(非越狱)
- Android墙外的学习资源
- VS编译报错集合
- 简易聊天程序教程(一)自定义异常和消息格式
- POI 解析xls
- Android实现ListView左右滑动删除和编辑
- caffe cpu版 Anaconda3 python 接口安装