观察者模式猫大叫一声老鼠逃跑主人惊醒类图
时间: 2023-11-25 11:51:06 浏览: 127
观察者模式是一种行为设计模式,用于在对象之间建立一对多的依赖关系,使得当一个对象的状态发生改变时,所有依赖于它的对象都能够得到通知并自动更新。在观察者模式中,有两个主要角色:观察者和目标。
观察者模式的类图如下所示:
```
+-------------------+ +-------------------+
| Subject | | Observer |
+-------------------+ +-------------------+
| | | |
| + attach(observer: Observer) | |
| + detach(observer: Observer) | |
| + notify() | | + update() |
| | | |
+-------------------+ +-------------------+
▲ ▲
| |
| |
+-------------------+ +-------------------+
| ConcreteSubject | | ConcreteObserver |
+-------------------+ +-------------------+
| | | |
| | | |
+-------------------+ +-------------------+
```
在这个类图中,Subject是目标类,它维护了一个观察者列表,并提供了方法来添加、删除和通知观察者。Observer是观察者接口,定义了一个update()方法,用于接收目标的通知。ConcreteSubject是具体的目标类,它实现了Subject接口,并在状态发生改变时通知观察者。ConcreteObserver是具体的观察者类,它实现了Observer接口,并在接收到通知时更新自己的状态。
根据你提供的引用内容,观察者模式可以应用于猫大叫一声老鼠逃跑主人惊醒的场景中。具体的类图如下所示:
```
+-------------------+ +-------------------+
| Cat | | Mouse |
+-------------------+ +-------------------+
| | | |
| + meow() | | + run() |
| | | |
+-------------------+ +-------------------+
▲ ▲
| |
| |
+-------------------+ +-------------------+
| Owner | | AlarmClock |
+-------------------+ +-------------------+
| | | |
| + wakeUp() | | + ring() |
| | | |
+-------------------+ +-------------------+
```
在这个类图中,Cat是目标类,它有一个meow()方法用于猫大叫一声。Mouse和Owner是观察者类,它们分别有一个run()方法和wakeUp()方法,用于老鼠逃跑和主人惊醒。AlarmClock是另一个观察者类,它有一个ring()方法,用于响起闹钟。
当Cat调用meow()方法时,它会通知所有的观察者,即Mouse、Owner和AlarmClock,它们分别执行自己的动作。
阅读全文