定义对象间的一种多对多的的依赖关系,当一个对象的状态发生改变时,多有依赖于他的对象都会得到相应的通知并自动更新
适用于:
一个对象的行为取决于他的状态,并且必须在运行时候根据状态改变它的行为,
一个操作中含有庞大的分支条件,并且依赖于该对象的状态
状态模式将你的每一个分支放入一个个独立的类中。这样使得对象自身情况将对象本身作为一个对象,这个对象不会依赖其他对象而独立变化。
下边我么就用简单的代码解释吧
/**
* @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
分享到:
相关推荐
基于STM32CUBEMX驱动TMOS模块STHS34PF80(5)----配置...脚本利用内嵌的中断引擎来检测温度数据的就绪状态,以及通知存在和运动事件。 本节将在上节代码中继续配置,通过获取模块的状态标志位来检测是否有人体存在。
基MSP430F149设计的多种控制模式的多功能儿童玩具WORD论文文档+ALTIUM设计原理图PCB+软件源码。 本项目设计了一款以MSP430F149为主控芯片的智能玩具车。小车采用无线和蓝牙两种方式进行控制,拥有三种工作模式,即...
而在之后的实际使用时,发现oSIP也需要增加OSIP_MT宏,否则OSIP_MT调用oSIP的线程库时会出错,所以我们需要重新编译oSIP了:),因为eXosip是基于oSIP的(同上方式创建静态和...
asp.net基于三层模式就业求职招聘网毕业源码案例设计 开发软件: Visual Studio 2010以上 数据库:sqlserver2005以上 开发技术:基于MVC思想和三层设计模式,前台采用bootstrap响应式框架,后台div+css (1)登陆:...
对当前典型的水下无线通信网进行分析,针对水声、光、射频3种通信模式在水下无线通信中的优缺点,提出基于软件无线电技术的多模式自适应水下无线通信网络的概念及其框架结构,并对其中的自适应调制解调方式展开研究...
当模型发生改变时,它会通知视图(View),并且为视图提供查询模型相关状态的能力。同时,它也为控制器(Controller)提供访问封装在模型内部的应用程序功能的能力。 一个视图(View)用来组织模型的内容。它从...
1.1 activex部分 1.1.1 activex控件之...6.3.10 状态模式(state模式) 第7章 工具篇 7.1 极限编程的集成测试工具-dunit 7.2 性能分析工具gpprofile 7.3 内存泄漏清道夫--memproof 7. 4 codesite应用指南
(1)针对多窗口类浏览器模式问题,指出并分析了该问题存在的原因,利用Activity的运行机制,通过Fragment栈对主要模块的Webview进行管理,实现对不同模块之间切换的控制。 (2)针对跨域数据交互问题,指出并分析了...
基于SSM(Spring+SpringMVC+Mybatis)和Vue.js开发的疫情居家办公OA系统是一个高效、安全、便捷、灵活的远程办公系统,它的主要功能包括:工作任务管理、系统消息通知、个人日程管理等。 系统采用前后端分离的架构...
## 开发技术:基于MVC思想和三层设计模式,前台采用bootstrap响应式框架,后台div+css (1)登陆:求职者可以通过用户名和密码进行登陆系统。 (2)修改密码:求职者可以通过对在个人资料模块进行修改密码。 (3)...
WM_ENTERIDLE= $0121 //当一个模态对话框或菜单进入空载状态时发送此消息给它的所有者,一个模态对话框或菜单进入空载状态就是在处理完一条或几条先前的消息后没有消息它的列队中等待 WM_MENURBUTTONUP= $0122 // ...
观察者12.1 何为观察者模式12.2 何时使用观察者模式12.3 在模型-视图-控制器中使用观察者模式12.4 在Cocoa Touch框架中使用观察者模式12.4.1 通知12.4.2 键-值观察12.5 在TouchPainter中更新CanvasView上的线条12.6 ...
10.心跳包维持在线状态(弹性心跳包间隔:一段时间内无收/发消息,则逐步增加心跳包时间间隔,以减轻服务器负担;收/发消息,则恢复原时间间隔); 11.新消息头像闪烁提醒; 12.新消息标题滚动字幕提醒; 13.新消息...
系统目标 本系统的主要功能是对各种服务器进行实时监控,基于Windows系统(包括Windows XP/2021/2021),采用C/S模式,使用VC6.0开发。其中,Client客户端安装在受监控的服务器上,Server服务器端安装在网管人员的...
从这两个传感器生成的值在逻辑上进行“和”操作,以激活触发针,使用触发以及邮件和SMS集成,一旦触发该针,就会发送一封电子邮件,并且一旦检测到用户的就座模式它将通知发送到基于android的应用程序。 移动应用...
基于C++/winsock2,进行最小网元设计。在本项目的设计中,网元间以...本项目中的网元是半双工模式,即同时只能处于收/发状态中的一种。这一选择将通过用户手动输入来激活,然后应用层负责将用户的选择通知到整个网元。
(10)用户可以在微信小程序的消息通知页面查看最近十条间隔一分钟以上的报警信息,信息包括报警日期时间,空气参数数据和设备状态。 ## 项目备注 1、该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的...
通知管理:系统会自动发送租赁状态、支付状态和其他相关通知给用户和房屋所有者或经纪人。 该系统还提供了一些高级功能,例如: 管理员管理:管理员可以对用户、房屋、租赁请求等进行管理和审核。 数据统计:系统...
【资源介绍】 基于javaweb开发的心理咨询预约管理系统源码+项目使用说明+sql数据库(毕设源码).zip ...预约状态变动时邮件和站内消息通知来访者 **其他** 来访者注册 管理员、咨询师和来访者登录
本项目是一个基于SSM框架(Spring、...消息通知:当用户的订单状态发生变化时,会收到微信的消息通知。 总的来说,这个项目是一个功能完善、技术先进的跳蚤市场系统,能够满足用户在微信小程序上进行二手交易的需求。