大话设计模式十六:状态模式(无尽加班何时休)
来源:互联网 发布:如何电话联系淘宝卖家 编辑:程序博客网 时间:2024/05/17 07:13
状态模式主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况。把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复杂的判断逻辑简化。
//State类,抽象状态类,定义一个接口以封装与Context的一个特定状态相关的行为public interface State{public void handle(Context context);}//ConcreteState类,具体状态,每一个子类实现一个与Context的一个状态相关的行为。public class ConcreteStateA implements State{public void handle(Context context){context.setState(new ConcreteStateB());}}public class ConcreteStateB implements State{public void handle(Context context){context.setState(new ConcreteStateA());}}//Context类,维护一个ConcreteState子类的实例,这个实例定义当前的状态public class Context{private Statestate;public Context(State state){this.state = state;}public void request(){state.handle(this);}public State getState(){return state;}public void setState(State state){this.state = state;System.out.println("当前状态:" + state.getClass().getName());}}//客户端代码public class Main{public static void main(String[] args){Context context = new Context(new ConcreteStateA());context.request();context.request();context.request();context.request();}}
状态模式的好处:将特定的状态相关的行为都放入一个对象中,由于所有与状态相关的代码都存在于某个ConcreteState中,所以通过定义新的子类可以很容易地增加新的状态和转换,即消除庞大的条件分支语句。
什么时候使用状态模式:当一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为时,就可以考虑使用状态模式了。
- 大话设计模式十六:状态模式(无尽加班何时休)
- 《大话设计模式》——读后感 (10)无尽加班何时休?——状态模式
- 《大话设计模式》之--第16章 无尽加班何时休----状态模式
- 《大话设计模式》之--第16章 无尽加班何时休----状态模式
- 《大话设计模式》--无尽加班何时休--状态模式<State>(16)
- 大话设计模式-第16章 无尽加班何时休-状态模式
- 《大话设计模式》—— 读后感(16)无尽加班何时休息——状态模式
- 【设计模式】无尽加班何时休 --- 状态模式
- 第十六章 无尽加班何时休--状态模式(读书笔记)
- 设计模式 (十六)状态模式(State)
- 大话设计模式-状态模式
- 大话设计模式 状态模式
- 大话设计模式-状态模式
- 大话设计模式-状态模式
- 大话设计模式读书笔记(十六) 组合模式
- 桥接设计模式-手机软件何时统一-大话设计模式
- 大话设计模式学习(十二)——状态模式
- 大话设计模式之状态模式(java版实现)
- Spring框架中获得DataSource对象的方法
- MySQL Backup and Restore Commands for Database Administration
- SQL+C#:一次多语言混合编程的经验总结
- python 判断这个数是否是素数
- 树状数组(Binary Indexed Trees)
- 大话设计模式十六:状态模式(无尽加班何时休)
- jQuery的deferred对象详解
- cocos2d CCSprit的创建、图片替换等相关内容
- 菜鸟的学习之路(3) —java 面向对象程序设计的封装、继承和多态
- Install LEMP (Linux, Nginx, MySQL 5.5.29, PHP 5.4.11) on RHEL/CentOS 5-6 & Fedora 18-12
- 用MATLAB做聚类分析时非常有用的自定义距离函数和标准化函数
- 随笔:另类的观点看游戏市场
- SQL中Union与Union All的区别
- 学习设计模式之禅——6大设计原则