我的世界观察者模式命令方块指令

设计模式众多,目前主要分三大类,涵盖了23种。其中的观察者模式,作为开发设计中常用的代码设计模式之一,属于行为模式中的一种。该模式在软件开发中广泛应用,且相对容易掌握和应用。今天,我们来详细探讨观察者模式。
观察者模式的定义如下:
观察者模式(Observer Design Pattern)在对象间建立一对多的依赖关系。当一个对象的状态发生改变时,所有依赖的对象都会得到通知并自动更新。换句话说,当一个对象发生变化时,其所有观察者都会做出相应的响应。
以项目进展为例,当你推进项目时,项目的进度会发生变化。一旦进度更新,关注此项目的领导们会根据新的进度做出相应策略调整。如进度滞后时,产品团队会催你加班赶进度,市场部门会做好宣传规划,门会进行人员等。
在观察者模式中,主要包括以下几个关键部分:
1. Subject(被观察者):定义被观察者的职责,包括动态增加、删除观察者。其主要功能是管理观察者并通知观察者。
2. Observer(观察者):观察者接收到变更消息后,会执行相应的方法操作,处理接收到的信息。
3. ConcreteSubject(被观察者的实现类):实现被观察者的业务逻辑,并定义哪些事件需要通知。
4. ConcreteObserver(观察者的具体实现):每个观察者在接收到消息后的处理反应是独特的,因此各个观察者有自己的处理逻辑。
接下来我们通过代码简单实现观察者模式。首先创建一个被观察者的父类Subject,包括观察者的添加、移除以及触发变化事件的功能。然后创建一个观察者的父类接口Observer,定义被观察者发生变化时,观察者需要做出的反应。之后,我们定义一个Me的类,这个类继承自Subject,包括做项目的逻辑和一个判断方法。当满足某种条件(如项目延期)时,会通知相关的观察者。
我们还需要创建不同类型的观察者,例如HR、PM、OM等,这些观察者只需要实现Observer接口即可。
我们通过测试代码来验证实现。创建一个被观察者张三的实例,然后添加HR、PM、OM等类型的观察者。当张三的项目发生变化时,所有注册的观察者都会收到通知并做出相应的处理。
观察者模式的优点包括:建立抽象的耦合关系,不需要被观察者知道有多少观察者;支持广播通讯;代码具有较好的可扩展性。缺点包括:当观察者数量较多时,通知时间较长,性能可能下降;存在循环依赖可能导致系统崩溃;同步通知异常可能导致后续处理失败;异步通知需要保证通知的可靠性。观察者模式没有机制告知观察者对象是如何发生变化的。
观察者模式的应用场景包括:器实现、关联变化的业务场景以及跨系统的消息传递交换等。
观察者模式是一种容易理解但应用得当却需要深思熟虑的设计模式。在许多框架中,如Spring、Tomcat、MQ等,都有广泛应用。在使用观察者模式时,需要考虑诸多因素,如性能、通知的可靠性以及变化通知的精确性等。
