luk*_*i27 2 domain-driven-design hexagonal-architecture kotlin
我有一个关于六边形架构和 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 ?
}
}
Run Code Online (Sandbox Code Playgroud)
DDD是一种设计理念,只需要以下内容:
DDD 对于哪些类可以相互引用或不可以相互引用没有任何限制。在书中,DDD 示例使用传统的分层架构,但书中还指出 DDD 可以与任何其他软件架构一起使用。如果你想使用六边形架构也可以。
六角形架构将应用程序分为 3 个同心层:适配器、端口、业务。六边形架构还规定只允许向内引用。这意味着适配器可以引用端口和业务,端口可以引用业务,而业务不能引用其他层。在这种情况下,从适配器引用和调用业务层是完全合法的。破坏该模式的方法是将端口或适配器的引用传递给业务模型。
| 归档时间: |
|
| 查看次数: |
4104 次 |
| 最近记录: |