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

责任链设计模式是否适合在硬件组件上运行Python解决方案,python,design-patterns,raspberry-pi,chain-of-responsibility,Python,Design Patterns,Raspberry Pi,Chain Of Responsibility,我有一个用Python编写的OOP解决方案,它主要关注于管理不同类型的硬件组件,如相机、伺服、接近传感器等 我有一群运营经理。操作管理器基本上是一个类,其中定义了多个公共方法。我定义的规则如下: 1. Different operation managers can call each other’s public methods 2. Multiple operation managers are involved into one specific use-case 3. Operation

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

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

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)
我在这里的目标是能够

  • 轻松集成新的运营管理器
  • 能够测试特定用例(operation manager操作集)
  • 引入一个抽象层次,让不同的运营经理彼此分离

我一直在考虑,但仍然不确定这是否是我的最佳选择。

没有。责任链对于一步一步地处理某件事情很有用,其中每个组件可能或可能不参与,或者可能或可能不终止整个执行。它描述了“步骤”的线性排序,通常以“链接”的链表(负责处理特定数据的特定对象)来实现。HTTP拦截器是典型的例子。对于线性排序,使用了一个图,它与
GoF
的责任链几乎没有关系:“小”,因为链表本质上是一种图

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

既然您以
用例
原语为中心,为什么不在代码中严格定义它呢?一个
UseCase
接受它需要的任何东西,并以某种统一的形式输出结果——你必须引入通用的结果/失败报告对象,足够通用,以便所有用例都能重用

我所描述的是不是一种模式,至少不是一种
GoF
模式,尽管这绝对是专门化您的需求和期望的一个很好的起点