我沉浸在 DDD 中,并且有一个关于什么属于该域以及什么是基础架构问题的问题。
描述域的简化示例:
该应用程序中的上下文之一是关于允许用户检查网页以获取某些信息的便利功能。IE。
“用户想要检查网页并确定短语“lorem ipsum”是否出现以及出现在什么位置。
我们将使用 Selenium 作为匹配短语的底层技术。
在深入研究 DDD 之前,我会创建一个如下所示的类(下面是 Python,但语言无关紧要):
class Page:
def __init__(self, url, environment, driver):
self.environment = environment
self.url = url
self.driver = driver // Selenium Driver
def contains_phrase(self, phrase):
self.driver.get(self.environment.url + self.url_suffix) // Selenium Command
...
该实体现在依赖于 selenium,不再是纯对象(POCO、POJO 等)。在 DDD 中,这对我来说并不正确。
我的理解是,selenium 表达式也不属于应用程序服务层,因为这会使类/方法膨胀,理想情况下服务层应该很薄。
那么这是否属于基础设施层?很像一个带有持久性代码的存储库。就像是:
class PageAutomator:
...
def does_page_contain_phrase(self, page, phrase):
self.driver.get(self.environment.url + self.url_suffix) // Selenium Command
这听起来像正确的方向吗?如果是这样?:
这意味着 Page 实体开始趋向于贫血模型,并且正在成为一个简单的 DTO。如果是这样,这个实体是否还有必要?
应用服务层是否可以直接调用基础设施层并执行一些操作(以执行用例)而不涉及任何实体(以及域)?即使采用更多的事务脚本方法,我的理解是 Selenium 功能仍然不应该存在于域中?
或者(而且我是 DDD 的新手)我完全脱离了基础,在这种情况下,非常欢迎任何建议或建议。
谢谢