Skip to main content
 首页 » 编程设计

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

2024年12月31日15lovecherry

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

我有的是一帮运营经理。操作管理器基本上是一个类,其中定义了多个公共(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但仍然不确定这对我来说是否是最佳选择。

请您参考如下方法:

没有。责任链对于某些事情的逐步处理很有用,其中每个组件可能会或可能不会参与,或者可能会或可能不会终止整个执行。它描述了“步骤”的线性排序,通常根据“链接”的链表实现——特定对象负责处理特定数据。 HTTP 拦截器就是典型的例子。对于非线性-线性排序,使用了一个图,它与 GoF 的责任链关系不大:“小”是因为链表是一种图自然。

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

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

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