# 《WaLiSSH - AI Shell 智能终端》第1-5节:连接SSH简单领域设计
作者:小傅哥
博客:https://bugstack.cn (opens new window)
视频:https://t.zsxq.com/BWwZY (opens new window)
沉淀、分享、成长,让自己和他人都能有所收获!😄
大家好,我是技术UP主小傅哥。
# 一、本章诉求
运用 DDD 的领域设计思维知识,随着场景功能的逐步迭代,开始在 domain 领域层设计各个模块功能。这一节我们先要增加的是关于 SSH 连接的领域功能。
在前一节中,我们完成了 SSH 连接配置的库表设计,有了两张表 ssh_connection 和 ssh_connection_config,也把 PO、DAO、Mapper 都写好了。那么接下来,我们就要往上走一层,把这些数据库操作封装到领域层里,让业务逻辑有一个清晰的组织结构。
你可以把这个过程就是当成你自己在承接一次产品需求——产品经理说:"我们需要一个 SSH 连接管理功能,能创建、查询、更新、删除连接配置,还能建立和断开 SSH 连接。"你要做的,就是用 DDD 的方式把这个需求给实现了。
DDD 面向对象的拆分方式,会随着开发迭代,逐步让支撑于各个业务功能的方法,都被归类,聚合,以便于更好的迭代和维护。
本节课程,我们主要完成以下内容:
- 理解 DDD 六边形架构中 Domain 层的核心定位,以及它与其他层的关系
- 掌握 Entity(实体) 和 Value Object(值对象) 的设计方法
- 学会 Service 接口与实现 的拆分方式,让业务逻辑编排有迹可循
- 理解 依赖倒置原则(DIP) 在 Repository 和 Port 接口上的落地
- 完成 SSH 连接领域服务的 全功能开发与单测验证
👩🏻教书敲黑板:领域层是 DDD 的核心,它主要关注业务逻辑的设计和实现。你写的代码应该像是在描述业务规则,而不是在调数据库,数据库只是你具体的数据结构表现。
# 二、流程设计
如图,领域层结构设计;

- 首先,如果之前没做过星球里的其他关于 DDD 架构的项目,可能乍一看有点复杂。但其实主要实践几遍,就可以非常好的理解这个分层的目的了。在 DDD 架构中,领域设计是核心,都围绕实现 service 为主。之后 service 所需的对象(domain下的,实体、聚合、值对象)、adapter 适配器(port、repository)都是为了构建领域服务所产生的。
- 那么,我们这一节所实现的主要内容,就是提供出 SSH 所需的系列方法内容。SSH 连接的增加改查,以及建立起 SSH 连接操作。这部分具体的方法实现不难,甚至可以说,如果目前的情况看 MVC 会更加简单。但随着功能的逐步叠加,肯定是做好房间格局,会更容易扩展。这也是 DDD 面向对象设计的魅力。

