我有一个用 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模式,尽管这绝对是一个很好的起点,可以专门化您的要求和期望。
