设计模式之状态模式
既然是状态模式(State Pattern),那肯定要有状态类喽,那么建立一个抽象的State类:
abstract class State{
void operation()=0;
}
状态是为具体的环境所服务的,状态模式说的就是,当一个对象的状态改变时允许改变其行为,这个对象看起来就像改变了其类。建立一个这样的类:
class Context{
State state;
Context(State s){state=s;}
Context(){}
void setState(State s){state=s;}
void operation(){
state.operate();
}
}
也有人在
void operation(){
state.operate();
}
这个地方写成
void operation(){
state.operate(this);
}
这样,就在具体的State类中来控制Context状态改变了;原来的话,需要在客户端,或者Context类中来控制自己的状态的改变。
具体的State类,做什么样的操作,这里就不写了。