黑马程序员:Java培训、Android培训、iOS培训、.Net培训

                      黑马程序员--状态模式

一、定义

     允许一个对象在其内部状态改变时改变它的行为,对象看起来好像修改了它的类。

二、状态模式类图

   

    1)Context拥有一些内部状态,并且将这些状态相关的请求委托给当前的ConcreteState对象处理。

    2)Context和ConcreteState都可以决定一个状态的后继状态,以及是在何种条件下进行状态转换。

    3)Context可将自身作为一个参数传递给处理该请求的状态对象。这使得状态对象在必要时可以访问Context.

三、适用性

    1、一个对象得行为取决于它得状态,并且它必须在运行时刻根据状态改变它得行为。

    2、一个操作中含有庞大得多分支语句,并且这些分支依赖于该对象得状态。

四、使用状态模式需要考虑得问题

    1、谁决定状态转换

        Context或ConcreteState。

    2、基于表的状态驱动

    3、何时创建和销毁State对象

    4、使用动态继承

        即在运行时刻改变委托得目标来实现。

  

写在模式之前:http://www.cnblogs.com/oo-lab/articles/4593399.html

策略模式:http://www.cnblogs.com/oo-lab/articles/4593407.html
迭代器模式:http://www.cnblogs.com/oo-lab/articles/4593416.html
观察者模式:http://www.cnblogs.com/oo-lab/articles/4593418.html
命令模式:http://www.cnblogs.com/oo-lab/articles/4593425.html
模板方法模式:http://www.cnblogs.com/oo-lab/articles/4593428.html
状态模式:http://www.cnblogs.com/oo-lab/articles/4593429.html

单件模式:http://www.cnblogs.com/oo-lab/articles/4593432.html
工厂方法模式:http://www.cnblogs.com/oo-lab/articles/4593435.html
抽象工厂模式:http://www.cnblogs.com/oo-lab/articles/4593440.html
生成器模式:http://www.cnblogs.com/oo-lab/articles/4593444.html