【设计模式】之状态模式(State)
状态模式的定义是:当一个对象内部状态发生变化时,允许它改变自己的行为。这个对象好像可以改变它的类。
The English Definition:Allow an object to change its behavior when its internal state changes. The object will appear to change its class.
简单来说就是,当一个对象的内部状态发生变化时,它会自动的改变自己的行为,这些变化对客户端的调用代码是透明的。
其实就是一个状态机的概念,运用状态模型,可以避免使用过多的条件判断语句,而且当状态增加以后,可以很容易地添加修改代码。
状态模式的应用比较广泛,网络通信协议、绘图工具等。
以下代码代码来自《Head First Design Patterns》:
首先定义一个State的抽象类
public class GumballMachineTestDrive { public static void main(String[] args) { GumballMachine gumballMachine = new GumballMachine(5); System.out.println(gumballMachine); gumballMachine.insertQuarter(); gumballMachine.turnCrank(); System.out.println(gumballMachine); gumballMachine.insertQuarter(); gumballMachine.turnCrank(); gumballMachine.insertQuarter(); gumballMachine.turnCrank(); System.out.println(gumballMachine); }}