责任链设计模式是否适合 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
模式,但绝对是确定您的要求和期望的良好起点。
我有一个用 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
模式,但绝对是确定您的要求和期望的良好起点。