使用领域驱动设计在后端和前端重复逻辑

jos*_*ior 4 java rest design-patterns domain-driven-design angular

我有一堂课,在后端有一些计算登录:

public class MyDomainClass{
    private Double amount;
    private Double total;
    public Double getPercentage(){
        /*business logic*/
    }
}
Run Code Online (Sandbox Code Playgroud)

我的前端是 Angular 2+,我想以两种方式显示此信息。

在服务器提供的包含它们列表的表中:

在此输入图像描述

并以版本形式,根据用户输入进行百分比计算:

在此输入图像描述

为了以表单进行此计算,我还必须在前端域类中复制逻辑吗?我担心重复业务逻辑并失去对具有相同想法的更复杂问题的代码的控制(后端用于报告和列表的一些逻辑以及前端表单中的相同逻辑)。

我怎样才能避免这种情况?

PS:我在后端使用Jax-rs。

Ebe*_*oux 5

你需要对这些事情采取务实的态度。前端需要确保用户体验至少是可以接受的,有时可能会出现功能重复以保持用户体验的流畅和合理。

另一个例子可能是验证。即使您的域必须执行相同的验证,前端验证也是必要的。域是真理的来源,所有不变量都必须在那里实现。如果可以改善用户体验,在合理范围内,在前端复制某些功能是可以接受的。

简单的计算,正如你所使用的例子,是我什至不会担心的事情。与添加成本以显示总计等相同。您的域可能会做同样的事情,但意图不同。

如果有任何“繁重的工作”需要完成,那就调用你的 web-api 并让你的后端处理它。