`

【状态模式】基于状态更新后多消息通知

阅读更多
定义对象间的一种多对多的的依赖关系,当一个对象的状态发生改变时,多有依赖于他的对象都会得到相应的通知并自动更新
适用于:
一个对象的行为取决于他的状态,并且必须在运行时候根据状态改变它的行为,
一个操作中含有庞大的分支条件,并且依赖于该对象的状态
状态模式将你的每一个分支放入一个个独立的类中。这样使得对象自身情况将对象本身作为一个对象,这个对象不会依赖其他对象而独立变化。
下边我么就用简单的代码解释吧
/**
 * @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




分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics