清洁架构是一种设计复杂软件系统的方法,确保业务逻辑独立于框架、数据库、用户界面和其他外部因素。它的核心是将代码分为多个层次,以便实现最小的相互影响。
在经典的清洁架构中,我们可以看到内部层(用例、实体)和外部层(框架、网关、控制器)。依赖的移动仅发生在内部(依赖反转),这允许我们轻松地配置、修改和测试系统,而不会冒着破坏关键业务逻辑的风险。
代码示例(Python):
# 实体 class Order: def __init__(self, id, total): self.id = id self.total = total # 用例 class CompleteOrderUseCase: def __init__(self, order_repository): self.order_repository = order_repository def execute(self, order_id): order = self.order_repository.get_by_id(order_id) order.completed = True self.order_repository.save(order)
关键特点:
清洁架构的所有层都可以由独立服务实现吗?
不一定。有时将每个层分离为独立服务并不合理,因为高耦合或通信开销。层是逻辑划分,物理隔离仅在合理必要时才需要。
如果这加快开发速度,可以打破清洁架构中依赖方向的原则吗?
不能,因为即使是短时间的时间节省也会导致未来维护的复杂化。依赖方向是清洁架构的基本原则,违反它会导致失去结构优势。
商务规则是否必须仅在内部层实现?
是的,所有重要的商务规则应位于内部层(实体或用例),以避免外部依赖的变化影响业务逻辑。