责任链设计模式是否适合 Python 在硬件组件上运行的解决方案

Is chain of responsibility design pattern suitable for Python solution operating over hardware components

我有一个用 Python 编写的 OOP 解决方案,它主要专注于管理不同类型的硬件组件,例如相机、伺服、接近传感器等。

我有的是一帮运营经理。操作管理器基本上是一个 class,其中定义了多个 public 方法。我定义的规则如下:

1. Different operation managers can call each other’s public methods
2. Multiple operation managers are involved into one specific use-case
3. Operation manager's method execution depends on the result of the previous operation manager (if previous was successfully executed - execute this one, otherwise terminate)
4. Each operation manager must be able to report its failure to a common channel (logging)
5. There’s no need for a transactional behavior (rollback)

我的目标是能够

我一直在看 CoR,但仍然不确定它是否是最适合我的选择。

没有。责任链对于逐步处理某事很有用,其中每个组件可能 可能不 涉及,或者可能 可能不 终止整个执行。它描述了 "steps" 的线性 ordering,通常根据 "links" 的链表实现 - 负责处理特定数据的特定对象。 HTTP 拦截器就是典型的例子。对于-线性排序使用图,它与GoF的责任链关系不大:"little"因为链表是一种图天生如此。

您所描述的内容过于宽泛,无法指定特定的模式。根据代码的复杂性、外部依赖性、用例数量和许多其他因素,可以使用很少的模式来解决它。

既然您以 use case 原语为中心,为什么不在您的代码中严格定义它呢? UseCase 接受它需要的任何东西,并吐出某种统一形式的结果——你必须引入通用的 result/failure-reporting 对象,该对象足够通用,可以被所有用例重用。

我所描述的 不是 模式,至少不是 GoF 模式,但绝对是确定您的要求和期望的良好起点。