定义对象间的一种多对多的的依赖关系,当一个对象的状态发生改变时,多有依赖于他的对象都会得到相应的通知并自动更新
适用于:
一个对象的行为取决于他的状态,并且必须在运行时候根据状态改变它的行为,
一个操作中含有庞大的分支条件,并且依赖于该对象的状态
状态模式将你的每一个分支放入一个个独立的类中。这样使得对象自身情况将对象本身作为一个对象,这个对象不会依赖其他对象而独立变化。
下边我么就用简单的代码解释吧
/**
* @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
分享到:
相关推荐
观察者模式定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。 5. MarvelousWorks.PracticalPattern_4 可能是“策略模式”的实例。策略模式定义了一系列...
6. **事件驱动编程**:`BackgroundWorker`组件的工作模式基于事件。`DoWork`事件在后台线程中运行,`ProgressChanged`和`RunWorkerCompleted`事件在UI线程中运行,确保了UI的安全更新。 7. **异常处理**:在`Worker...
C#中的委托和事件机制使得实现观察者模式变得简单,这种模式用于对象间的通信,让对象能够在状态改变时通知其他对象。 适配器模式是解决不同接口之间兼容性问题的一种方法,它通过创建一个新的类作为适配器,将不...
观察者模式定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。C#中的`System.ComponentModel.INotifyPropertyChanged`接口常用于实现这一模式,用于数据...
- **发布/订阅模式(PUB/SUB)**:这种模式允许多个消费者订阅同一主题的消息,使得消息能够被多个服务同时处理。这种方式非常适合于需要广泛传播消息的场景。 #### 四、KiteQ简介及其特点 KiteQ是一款基于Go语言...
在这个“串口发送接收 基于状态机”的项目中,开发者使用LabVIEW构建了一个串行通信系统,它利用状态机模型来管理发送和接收数据的过程。下面我们将深入探讨LabVIEW串口通信以及状态机的概念。 1. **LabVIEW串口...
3. 观察者模式:定义对象间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在事件驱动编程中广泛应用。 4. 建造者模式:将复杂对象的构建与其表示分离,使得同样的构建...
4. **观察者模式**:定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。C#中的`System.ComponentModel.INotifyPropertyChanged`接口可以实现事件驱动的观察...
观察者模式定义了对象间的一种一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。C#中的`System.ComponentModel.INotifyPropertyChanged`接口常用于数据绑定和事件驱动编程。...
观察者模式是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。在下载管理中,我们可以将下载任务作为被观察者,其他组件(如UI界面)...
观察者模式是软件设计模式中的一种行为模式,它在对象之间定义了依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。这个模式是基于发布-订阅(Publish/Subscribe)原则,允许我们...
**C++设计模式——基于Qt4开源跨平台开发框架** 设计模式是软件工程中的宝贵经验总结,它们代表了在特定场景下解决常见问题的最佳实践。C++作为一种强大的面向对象编程语言,结合Qt4这一跨平台的开发框架,可以实现...
观察者模式定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。在C语言中,可以通过函数指针和结构体来实现观察者模式。 **备忘录模式** 备忘录模式捕获一...
关联的Observer会在适当的时候接收到状态变化的通知,并在回调方法中处理UI更新。 在"NewMVP2"这个子目录中,我们可以预期找到以下内容: 1. Model类:包含数据获取和处理的代码,可能有网络请求、数据库操作等。 ...
观察者模式是软件设计中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这个模式的核心概念是观察者(Observer)和主题(Subject)两...
观察者模式是软件设计模式中的一种行为模式,它允许一个对象(称为观察者)在状态改变时自动通知其他对象(称为被观察者)。在Android开发中,这种模式被广泛应用于事件处理,例如用户界面的交互反馈。在这个示例中...
观察者模式(Observer Pattern)是软件设计模式中的一种行为模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并自动更新。这种模式常用于实现事件驱动或者发布...
使用状态模式,用以标识目标的状态 在进行伤害整合时,采用外观模式,因为伤害来自于:目标本身的自带伤害、技能伤害、武器造成的伤害、装备的附加伤害 在进行战斗时,利用中介者模式,对战斗双方进行中介访问 当...
例如,用户提交借书请求时,控制器会接收到请求,调用模型完成借书操作,然后通知视图更新界面状态。 **图书管理系统功能实现** 1. **图书管理**:系统需要提供添加、删除、修改图书的功能。在MVC模式下,模型负责...
4. 模式通知管理:BswM需要根据模式通知状态和请求进行状态迁移,例如模式切换、模式确认等。 在代码中,我们可以看到BswM状态迁移的逻辑是基于多个条件和状态的组合判断,例如: * 如果电源模式请求为唤醒模式,...