`

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

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




分享到:
评论

相关推荐

    设计模式_基于C#的工程化实现及扩展_源码

    观察者模式定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 5. MarvelousWorks.PracticalPattern_4 可能是“策略模式”的实例。策略模式定义了一系列...

    Winform实现多线程异步更新UI(进度及状态信息)

    6. **事件驱动编程**:`BackgroundWorker`组件的工作模式基于事件。`DoWork`事件在后台线程中运行,`ProgressChanged`和`RunWorkerCompleted`事件在UI线程中运行,确保了UI的安全更新。 7. **异常处理**:在`Worker...

    设计模式:基于C#的工程化实现及扩展(完整电子版)

    C#中的委托和事件机制使得实现观察者模式变得简单,这种模式用于对象间的通信,让对象能够在状态改变时通知其他对象。 适配器模式是解决不同接口之间兼容性问题的一种方法,它通过创建一个新的类作为适配器,将不...

    设计模式:基于C#的工程化实现及扩展(扫描完整版)下载地址

    观察者模式定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。C#中的`System.ComponentModel.INotifyPropertyChanged`接口常用于实现这一模式,用于数据...

    基于Go实现的分布式MQ消息队列

    - **发布/订阅模式(PUB/SUB)**:这种模式允许多个消费者订阅同一主题的消息,使得消息能够被多个服务同时处理。这种方式非常适合于需要广泛传播消息的场景。 #### 四、KiteQ简介及其特点 KiteQ是一款基于Go语言...

    【LabVIEW程序】 串口发送接收 基于状态机

    在这个“串口发送接收 基于状态机”的项目中,开发者使用LabVIEW构建了一个串行通信系统,它利用状态机模型来管理发送和接收数据的过程。下面我们将深入探讨LabVIEW串口通信以及状态机的概念。 1. **LabVIEW串口...

    《设计模式--基于C#的工程化实现及扩展》.(王翔)_(0601).rar

    3. 观察者模式:定义对象间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在事件驱动编程中广泛应用。 4. 建造者模式:将复杂对象的构建与其表示分离,使得同样的构建...

    设计模式 基于 C# 工程化实现及扩展Code

    4. **观察者模式**:定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。C#中的`System.ComponentModel.INotifyPropertyChanged`接口可以实现事件驱动的观察...

    《设计模式--基于C#的工程化实现及扩展》.(王翔)

    观察者模式定义了对象间的一种一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。C#中的`System.ComponentModel.INotifyPropertyChanged`接口常用于数据绑定和事件驱动编程。...

    Android基于观察者模式下载管理

    观察者模式是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在下载管理中,我们可以将下载任务作为被观察者,其他组件(如UI界面)...

    设计模式—观察者模式

    观察者模式是软件设计模式中的一种行为模式,它在对象之间定义了依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这个模式是基于发布-订阅(Publish/Subscribe)原则,允许我们...

    C++设计模式--基于Qt4开源跨平台开发框架.chm

    **C++设计模式——基于Qt4开源跨平台开发框架** 设计模式是软件工程中的宝贵经验总结,它们代表了在特定场景下解决常见问题的最佳实践。C++作为一种强大的面向对象编程语言,结合Qt4这一跨平台的开发框架,可以实现...

    C/C++设计模式

    观察者模式定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。在C语言中,可以通过函数指针和结构体来实现观察者模式。 **备忘录模式** 备忘录模式捕获一...

    基于LiveData的MVP设计模式Demo

    关联的Observer会在适当的时候接收到状态变化的通知,并在回调方法中处理UI更新。 在"NewMVP2"这个子目录中,我们可以预期找到以下内容: 1. Model类:包含数据获取和处理的代码,可能有网络请求、数据库操作等。 ...

    设计模式_观察者模式.zip

    观察者模式是软件设计中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这个模式的核心概念是观察者(Observer)和主题(Subject)两...

    观察者模式示例代码 android studio kotlin代码 基于java.uitl.*

    观察者模式是软件设计模式中的一种行为模式,它允许一个对象(称为观察者)在状态改变时自动通知其他对象(称为被观察者)。在Android开发中,这种模式被广泛应用于事件处理,例如用户界面的交互反馈。在这个示例中...

    java 设计模式 观察者模式 简单实例 包括测试test类

    观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动或者发布...

    基于Java实现战斗小游戏-设计模式

    使用状态模式,用以标识目标的状态 在进行伤害整合时,采用外观模式,因为伤害来自于:目标本身的自带伤害、技能伤害、武器造成的伤害、装备的附加伤害 在进行战斗时,利用中介者模式,对战斗双方进行中介访问 当...

    基于MVC模式图书管理系统

    例如,用户提交借书请求时,控制器会接收到请求,调用模型完成借书操作,然后通知视图更新界面状态。 **图书管理系统功能实现** 1. **图书管理**:系统需要提供添加、删除、修改图书的功能。在MVC模式下,模型负责...

    BswM状态迁移(Vector代码版本)

    4. 模式通知管理:BswM需要根据模式通知状态和请求进行状态迁移,例如模式切换、模式确认等。 在代码中,我们可以看到BswM状态迁移的逻辑是基于多个条件和状态的组合判断,例如: * 如果电源模式请求为唤醒模式,...

Global site tag (gtag.js) - Google Analytics