适用于:
一个对象的行为取决于他的状态,并且必须在运行时候根据状态改变它的行为,
一个操作中含有庞大的分支条件,并且依赖于该对象的状态
状态模式将你的每一个分支放入一个个独立的类中。这样使得对象自身情况将对象本身作为一个对象,这个对象不会依赖其他对象而独立变化。
下边我么就用简单的代码解释吧
/** * @author Janle * */ public interface WebServiceOrderHolder { String recordMessage(); }
/** * @author Janle * */ public class FwJdOrderHolder implements WebServiceOrderHolder{ /* (non-Javadoc) * @see com.janle.webservice.WebServiceHolder#sendMessage() */ @Override public String recordMessage() { return "京东服务订单Holder"; } }
/** * @author Janle * */ public class FwTmallOrderHolder implements WebServiceOrderHolder{ /* (non-Javadoc) * @see com.janle.webservice.WebServiceHolder#sendMessage() */ @Override public String recordMessage() { return "天猫服务订单Holder"; } }
接下来我们看看运行的结果
/** * @author Janle * */ public class WebServiceOrderContent { private WebServiceOrderHolder webServiceOrderHolder; public WebServiceOrderHolder getWebServiceOrderHolder() { return webServiceOrderHolder; } public void setWebServiceOrderHolder(WebServiceOrderHolder webServiceOrderHolder) { this.webServiceOrderHolder = webServiceOrderHolder; } public String getRecordMessage() { return webServiceOrderHolder.recordMessage(); } public static void main(String[] args) { WebServiceOrderContent wsoc=new WebServiceOrderContent(); wsoc.setWebServiceOrderHolder(new FwJdOrderHolder()); System.out.println(wsoc.getRecordMessage()); wsoc.setWebServiceOrderHolder(new FwTmallOrderHolder()); System.out.println(wsoc.getRecordMessage()); } }
这里比较简单的例子。你可以配合MQ使用,以及多个线程处理状态更新。
运行的结果:
京东服务订单Holder 天猫服务订单Holder