领域驱动设计实践——验证(一)

  领域模型设计为复杂问题的解决提供了一套方法,但其理论往往非常抽象,本系列文单旨在提供一些最佳实践。您需要首先认识到,软件的设计过程主观性很强,我希望能够提供一个设计思想让您在入门中有一个感性的认识,莫要陷入到“教条主义”中。

领域驱动设计:强调的是战略,是宏观的,它为复杂业务的解决提供了指导思想。在实践中,无论是“面向过程”还是“面向对象”的设计方式,都是领域驱动思路的一种实现方式,要根据不同的场景使用不同的方式,请您不要陷入自我怀疑,否认“面向过程”。

  程序研发过程中,往往涉及到验证。不论是采用哪种实现方式(面向过程的方式或者对象驱动),原则上,公有方法中的第一件事情是验证参数。何时,何地,如何做验证是一个开发者要面临的挑战。做一个合格的软件设计师(在这里,我喜欢用设计师而非码农或程序员,那是对于自己的不尊重),当您想要写一份干净、整洁及可读性很强的代码时,细节上的转变会让您的作品看起来更加赏心悦目、更有自信、代码可维护性更强。

代码是给人看的,不是机器

软件设计不存在固定的规则,如果您在开发过程始终坚持某些原则就产生了规则

1、基于视图模型的验证

  在展开书写之前,我们需要假设一个非常简单的业务场景:用户的每一个操作,都需要为其增加一个操作日志。在此处,我们遵循如下设计原则:1)涉及新建、更新、复杂查询业务时,Service层公有方法都接收视图模型作为参数,而非拆成一个个独立的参数;2)所有公有方法的要做的第一件事是验证。视图模型代码如下。

public class OperationLogInfo { private String module; private String operatorId; private String operatorName; private String action; public String getModule() { return module; } public void setModule(String module) { this.module = module; } public String getOperatorId() { return operatorId; } public void setOperatorId(String operatorId) { this.operatorId = operatorId; } public String getOperatorName() { return operatorName; } public void setOperatorName(String operatorName) { this.operatorName = operatorName; } public String getAction() { return action; } public void setAction(String action) { this.action = action; } }

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsxzsf.html