干净的架构:用例混合
Clean architecture: use case mixing
我试图了解干净的架构是如何工作的,上一个项目我有一个用户,他可以添加支付卡并购买订阅(示例用例),但是当它是新用户时,添加和购买集成为一步
Use case sample
根据阅读的内容,它应该有两个“Interactors”,一个“AddPayment”和“Purchase”,但是...我怎么混合:
用户可以分开做,但是当他是新手时,他在注册过程中添加支付方式并一步完成,
我想我应该有一个“添加并支付”用例,但它会重复代码和破坏范式,我看到这些选项:
- 用重复代码制作第三个用例
- 从控制器合并
- 制作一个调用其他两个的用例
你是怎么解决的?
我通常创建一个 基本用例 来调用其他两个。对于这个基本用例,我定义了一个新的请求模型,其中包含其他请求模型。这同样适用于响应模型。但有时请求或响应模型有一些共同点,我会创建更多压缩模型。
我认为基本用例最适合用例 uml 模型的 include relationship。
+-----------+
| AddAndPay |
+-----------+
| |
V V
+-----+ +-----+
| Add | | Pay |
+-----+ +-----+
AddAndPay
用例还处理其中一个用例的失败。例如。如果付款失败,您可能不想添加支付卡。也许您必须调用 RemovePaymentCard
用例,或者您的事务边界是 AddAndPay
用例。
我试图了解干净的架构是如何工作的,上一个项目我有一个用户,他可以添加支付卡并购买订阅(示例用例),但是当它是新用户时,添加和购买集成为一步
Use case sample
根据阅读的内容,它应该有两个“Interactors”,一个“AddPayment”和“Purchase”,但是...我怎么混合: 用户可以分开做,但是当他是新手时,他在注册过程中添加支付方式并一步完成,
我想我应该有一个“添加并支付”用例,但它会重复代码和破坏范式,我看到这些选项:
- 用重复代码制作第三个用例
- 从控制器合并
- 制作一个调用其他两个的用例
你是怎么解决的?
我通常创建一个 基本用例 来调用其他两个。对于这个基本用例,我定义了一个新的请求模型,其中包含其他请求模型。这同样适用于响应模型。但有时请求或响应模型有一些共同点,我会创建更多压缩模型。
我认为基本用例最适合用例 uml 模型的 include relationship。
+-----------+
| AddAndPay |
+-----------+
| |
V V
+-----+ +-----+
| Add | | Pay |
+-----+ +-----+
AddAndPay
用例还处理其中一个用例的失败。例如。如果付款失败,您可能不想添加支付卡。也许您必须调用 RemovePaymentCard
用例,或者您的事务边界是 AddAndPay
用例。