我们都是架构师!
获取每天技术干货,一起成为牛逼架构师
技术群请加若飞:1321113940 进架构师群
投稿、合作、版权等邮箱:admin@137x.com
发布于 2021-04-08 22:37
架构模式 Layers 有助于将应用程序划分为多组子任务,其中每组子任务都位于特定抽象层。
图片取自《 POSA , Vol.I , p22 》
在领域驱动设计(DDD)中采用的是松散分层架构,层间关系不那么严格。每层都可能使用它下面所有层的服务,而不仅仅是下一层的服务。每层都可能是半透明的,这意味着有些服务只对上一层可见,而有些服务对上面的所有层都可见。
同时在领域驱动设计(DDD)中也采用了继承分层架构,高层继承并实现低层接口。我们需要调整一下各层的顺序,并且将基础设施层移动到最高层。
package com.mallfoundry.user.domain;
public interface UserRepository {
User save(User user);
}
基础设施层 JpaUserRepository 实现类:
package com.mallfoundry.user.infrastructure.persistence;
public class JpaUserRepository implements UserRepository {
private final EntityManager entityManager;
public JpaUserRepository(EntityManager entityManager) {
this.entityManager = entityManager;
}
public User save(User user) {
return this.entityManager.merge(user);
}
}
我们确实使用包来划分层级,但是包名并不能真正表示分层。
我们通常将资源库的实现放置在基础设施层,这是因为我们采用了继承分层架构。如果你现在采用的是松散分层架构,你需要将资源库的实现放置在领域层。这是层的单向依赖原则所致,你不应该破坏这个原则。没有任何理由需要破坏分层架构的单向依赖原则,除非你不采用分层架构。
我们应该从混乱到有序的这个历史过程去研究(分析)分层架构,尤其是我们现在处在前后端分离的环境下,应用系统使用分层架构又面临着什么样的划分变化。
ResultSet
表示数据。(需要特别注意的是:在视图中直接使用 ResultSet
。)ResultSet
了,而是使用从 ResultSet
相映射的编程语言中的结构体(struct)或者对象类(class)。这表示:从编程语言中的表示法可以抽象业务域中的概念结构了。·END·
相关阅读:
作者:不够具体
来源:juejin.cn/post/6909774974400069639
版权申明:内容来源网络,版权归原创者所有。除非无法确认,我们都会标明作者及出处,如有侵权烦请告知,我们会立即删除并表示歉意。谢谢!
我们都是架构师!
获取每天技术干货,一起成为牛逼架构师
技术群请加若飞:1321113940 进架构师群
投稿、合作、版权等邮箱:admin@137x.com
本文来自网络或网友投稿,如有侵犯您的权益,请发邮件至:aisoutu@outlook.com 我们将第一时间删除。
相关素材