gpt4 book ai didi

kotlin - 六边形架构和 DDD

转载 作者:行者123 更新时间:2023-12-02 02:08:50 25 4
gpt4 key购买 nike

我有一个关于六边形架构和 DDD 的问题

是否允许从作为参数传递给适配器的持久性适配器调用域逻辑?

例子:

class DomainService(private val repositoryPort: RepositoryPort,
private val domainService2: DomainService2) {
fun doSomething(id: String?) {
repositoryPort.doSomething(id) {
id: String? ->
domainService2.doSomething2(id)
}
println("Doing something")
}
}

class DomainService2 {
fun doSomething2(id: String?) {
println("Doing something$id")
}
}

interface RepositoryPort {
fun doSomething(id: String?, consumer: (id: String?) -> Unit)
}

class RepositoryAdapter : RepositoryPort {
override fun doSomething(id: String?, consumer: (id: String?) -> Unit) {
println("checking something, searching in database")
consumer.invoke(id) // Is it allow here to call domain again ?
}

}

最佳答案

DDD 是一种设计理念,只需要满足以下条件:

  • 业务代码必须使用对象建模
  • 那个模型,只有那个,进入“域”组件

DDD 对哪些类可以相互引用或不可以引用没有任何限制。在书中,DDD 示例使用传统的分层架构,但书中还指出 DDD 可以与任何其他软件架构一起使用。如果你想使用六边形架构也可以。

六边形架构将应用程序拆分为 3 个同心层:适配器、端口、业务。六边形体系结构还声明仅允许向内引用。这意味着适配器可以引用端口业务,端口可以引用业务,而业务不能引用其他层。在这种情况下,从您的适配器引用和调用您的业务层是完全合法的。打破这种模式的是将对端口或适配器的引用传递给业务模型。

关于kotlin - 六边形架构和 DDD,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68002899/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com