先来看看目前我们专案的资料夹结构:
前面有提到,ActiveRecord 所建立的 model 与 schema 会直接互相绑定,要摆脱这个限制、重新建立 domain 中的 aggregate ,就需要额外处理资料存取的问题,因此在 domain 中大致上可以分成两层,一层是资料存取层 Data Access Layer (後简称 DAL),另一层则是领域逻辑层 Domain Logic Layer。至於 view 和 controller 因为不属於业务逻辑,因此不会放在 domain 资料夹内。
注1:
这边分层的名词是我和同事在讨论时约定成俗的共通语言,不一定为专有名词
注2:
显示逻辑要放在 domain 内或外在团队内部也还没有定论,因此先不放
包含 models 和 repository内的所有东西。
DAL 层负责提供一个稳定的介面,处理对资料的 CRUD,使领域层可以不用在意底下的实作方式。在 domain 中只有这层会与外部介面耦合,资料的异动仅能透过 repository 来处理。
包含 entity 和 use case。
DLL 层负责处理业务逻辑,视为整个专案中最核心的地方,因为他提供真实世界中的需求解决方案,因此这层最需要测试保护,也是含有最多领域知识的地方。
client 和 listener 是用来处理不同 domain 之间的依赖关系,往後会有专门一篇文章做讨论。
本系列文章中所举的例子,资料存在资料库中、且使用 ActiveRecord 当 ORM;但其实 ORM 和资料库对此架构来说,都是外部介面,因此假设今天储存资料的地方是 local 的 csv 档、或用另一套 ORM 系统,都一样可以套用此架构。
下一篇会介绍失去了 model 这个物件,要用甚麽来取代他,以及我们在实作上的原则。
本章介绍如何使用 terratest 为 terraform 准备整合测试 课程内容与代码会放在 G...
Most of the aspiring professionals are getting cer...
首先先将各个快捷键设好 将ActionBattle_Var.js改成 开一只程序ActionBatt...
使用过 Linux 的都知道,Linux 的 shell 不但可以本地运行,也可以通过远程的方式连接...
好啦,今天是第三十天了,今天会分享下赛程心得,并回顾一下前面系列文,最後是三十天後的规划! 参赛动机...