Java23种设计模式
状态模式把所研究的对象的行为包装在不同的状态对象里,对象内部状体发生改变,调用不同的状态对象,行为也发生改变。
需求:点击一个按钮三次,依次显示StateA、StateB、StateC。
- 定义State接口,里面有一个show()
public interface State {
void show();
}
- 定义StateA、StateB、StateC,实现State接口,并且show中打印对应文字。
public class StateA implements State{
@Override
public void show() {
System.out.print("StateA\n");
}
}
public class StateB implements State{
@Override
public void show() {
System.out.print("StateB\n");
}
}
public class StateC implements State{
@Override
public void show() {
System.out.print("StateC\n");
}
}
- 定义Context类,里面设置点击方法,并且每次进入调用对象不同。
public class Context {
private int num = 1;
public void setClick(){
if(num>3) num = 1;
State state = null;
if(num == 1){
state = new StateA();
}else if(num == 2){
state = new StateB();
}else if(num == 3){
state = new StateC();
}
state.show();
num++;
}
}
- 调用Context对象。
public class Test {
public static void main(String[] args) {
setClick();
}
public static void setClick(){
Context context = new Context();
for (int i =0;i<10;i++){
context.setClick();
}
}
}
打印结果:
StateA
StateB
StateC
StateA
StateB
StateC
StateA
StateB
StateC
StateA