设计模式21-状态模式
1. 概念
允许对象在其内部状态改变时改变他的行为。对象看起来似乎改变了他的类。
2. 案例
package org.demo.state.demo01; class Context{ private State state ; public Context(State state){ this.state = state ; } public State getState() { return state; } public void setState(State state) { this.state = state; System.out.println(state.getClass().getName()); } public void request(){ state.handle(this) ; } } /** * 定义一个接口用来封装与Context的一个特定状态相关的行为 这里的 handle 方法 */ abstract class State { abstract void handle(Context context) ; } class ConcreteStateA extends State{ @Override void handle(Context context) { //if(Context.getI()>5){执行操作}else{设置下一个要执行的状态} System.out.println("执行a的处理"); context.setState(new ConcreteStateB()) ; //设置下一个要执行的 状态 } } class ConcreteStateB extends State{ @Override void handle(Context context) { System.out.println("执行b的处理"); context.setState(new ConcreteStateA()) ; //设置下一个状态 } } public class Demo01 { public static void main(String[] args) { Context c = new Context(new ConcreteStateA()) ; c.request() ; c.request() ; /*c.request() ; c.request() ;*/ } }