一、观察者模式
观察者模式(Observer Pattern)是一种行为型设计模式,它定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,当主题对象发生变化时,会通知所有观察者对象,使它们能够自动更新自己。
1. 原理
观察者模式主要包括两个角色:主题(Subject)和观察者(Observer)。
- 主题:维护一系列观察者的列表,并允许添加、删除和通知观察者更新状态。
- 观察者:实现特定接口,用于接收主题的通知并更新自身状态。
2. 代码实现
from abc import ABC, abstractmethod # 观察者接口 class Observer(ABC): @abstractmethod def update(self, data): pass # 具体观察者A class ConcreteObserverA(Observer): def update(self, data): print(f"ConcreteObserverA received data: {data}") # 具体观察者B class ConcreteObserverB(Observer): def update(self, data): print(f"ConcreteObserverB received data: {data}") # 主题类 class Subject: def __init__(self): self.observers = [] def register_observer(self, observer): self.observers.append(observer) def unregister_observer(self, observer): self.observers.remove(observer) def notify_observers(self, data): for observer in self.observers: observer.update(data) # 客户端代码 subject = Subject() observer_a = ConcreteObserverA() observer_b = ConcreteObserverB() subject.register_observer(observer_a) subject.register_observer(observer_b) subject.notify_observers("Hello, observers!")
3. 应用场景
- GUI中的事件处理:当用户操作界面时,可以注册多个事件处理器来响应不同的事件,当事件发生时,通知所有已注册的事件处理器。
- 股票市场:当股票价格发生变化时,通知所有关注该股票的观察者。
- 实时数据流处理:当有新的数据产生时,通知所有订阅该数据的观察者进行处理。
二、策略模式
策略模式(Strategy Pattern)是一种行为型设计模式,它定义了一系列算法,并将每个算法封装在一个具有共同接口的类中,使得它们可以相互替换,策略模式让算法独立于使用它的客户端。
策略模式主要包括两个角色:策略(Strategy)和上下文(Context),策略定义了执行算法的逻辑,上下文负责调用策略的具体实现。
```python
from abc import ABC, abstractmethod
from typing import List, Callable, TypeVar, AnyObject
import random
T = TypeVar("T", bound=Callable[..., AnyObject]) # 泛型类型变量T,表示任意可调用对象(包括函数、方法等)的返回值类型为AnyObject的对象,这里用AnyObject代表任意类型的参数和返回值,T的实际类型取决于实际传入的策略函数的类型,如果策略是整数加法,那么T就是int;如果策略是字符串反转,那么T就是str。
内存卡故障别急,先尝试格式化或使用专业工具检测修复,有时简单的操作能带来意外惊喜。
折叠式设计巧妙,轻便携带,是提升办公与学习体验的贴心小物,它不仅自由调节角度,缓解颈椎压力,还兼顾散热,实用与美观兼备,确实是一款适合现代打工人与学生党的电脑支
平面设计笔记本,重性能更重便携,精选配置推荐,助你创意无限,工作效率加倍!
在众多笔记本电脑电池中,锂电池以其轻便、环保且无记忆效应的特性脱颖而出,尤其是高容量、长续航的锂离子电池,是追求移动办公和高效生活的理想选择。
JavaScript通过不依赖具体类型来实现多态,巧妙地利用了鸭子类型和原型链,让同一个方法在不同对象上有不同表现,这正是其魅力所在。