程序设计理念
1. 系统分层与职责分离
Section titled “1. 系统分层与职责分离”- 职责分离 (Separation of Concerns): 确保软件架构中的每一层只专注于一个方面的功能。
- 单向依赖原则: 允许上层组件直接调用下层组件,但严禁下层组件逆向依赖或调用上层组件。
┌──────────────────────────────────────────────┐│ 表现层 (Presentation Layer) ││ - 负责与客户端交互、API 路由分配 │└──────────────────────┬───────────────────────┘ │ 仅单向依赖 ▼┌──────────────────────────────────────────────┐│ 业务逻辑层 (Business Logic Layer) ││ - 组织核心领域模型与业务闭环流程 │└──────────────────────┬───────────────────────┘ │ 仅单向依赖 ▼┌──────────────────────────────────────────────┐│ 持久层 (Persistence Layer) ││ - 数据库操作及 Entity 实体的维护 │└──────────────────────┬───────────────────────┘ │ 仅单向依赖 ▼┌──────────────────────────────────────────────┐│ 基础设施层 (Infrastructure Layer) ││ - 屏蔽底层网络、磁盘 I/O 等物理细节 │└──────────────────────────────────────────────┘2. 边界隔离设计核心驱动力
Section titled “2. 边界隔离设计核心驱动力”在任何非玩具型、需要长期维护的复杂系统中,边界层 是实现 解耦、隔离 和 翻译 的关键机制。设计边界层主要受以下三个核心驱动力决定:
2.1. 核心驱动力一:技术隔离(防止技术细节泄露)
Section titled “2.1. 核心驱动力一:技术隔离(防止技术细节泄露)”核心原则: 核心业务逻辑(Service/Domain Layer)应当保持技术中立,对底层基础设施和框架的实现细节一无所知。
2.2. 核心驱动力二:异常与数据转换(协调不同层次的语言)
Section titled “2.2. 核心驱动力二:异常与数据转换(协调不同层次的语言)”核心原则: 软件的每个层次都应该使用它自己上下文的数据模型和异常类型,而边界层则充当“翻译官”。
2.3. 核心驱动力三:保证接口一致性(保障系统对外健壮性)
Section titled “2.3. 核心驱动力三:保证接口一致性(保障系统对外健壮性)”核心原则: 系统的对外暴露接口必须是绝对稳定、安全且符合契约规范的。
3. 面向切面编程 (AOP)
Section titled “3. 面向切面编程 (AOP)”面向切面编程(Aspect-Oriented Programming, AOP)是对面向对象编程(OOP)的重要补充,它专注于将系统中的 横切关注点(Cross-cutting Concerns) 与核心业务逻辑相分离。
横切关注点(AOP 切面) ┌──────────────────┐ ┌───────────────┐ │ - 日志记录 │ │ 业务模块 A │───┼──- 权限校验 │ └───────────────┘ │ - 事务管理 │ ┌───────────────┐ │ - 性能监控 │ │ 业务模块 B │───┼──- 缓存控制 │ └───────────────┘ └──────────────────┘3.1. AOP 核心概念要素
Section titled “3.1. AOP 核心概念要素”- 切面 (Aspect): 横切关注点的模块化。它是通知(Advice)和切入点(Pointcut)的结合。
- 连接点 (Join Point): 程序执行过程中的某个特定位置(如方法调用时、异常抛出时、属性修改时)。
- 通知/增强 (Advice): 切面在连接点上执行的具体动作。包括前置通知(Before)、后置通知(After)、环绕通知(Around)等。
- 切入点 (Pointcut): 用于定义在哪些连接点(Join Point)上触发通知。通常通过正则或注解匹配方法。
- 目标对象 (Target): 被一个或多个切面所增强的业务对象。
- 织入 (Weaving): 将切面应用到目标对象以创建新的代理对象的过程。
3.2. 典型应用场景
Section titled “3.2. 典型应用场景”- 安全检查与鉴权: 在所有 Controller 方法调用前,自动校验请求的用户 Token 是否有效。
- 声明式事务管理: 在 Service 层方法执行前自动开启事务,执行成功则提交,抛出未捕获异常则自动回滚。
- 全局性能审计: 监控匹配切入点的核心服务耗时,超过阈值时记录告警。
- 分布式日志链路追踪: 动态织入请求参数与耗时统计,透传
trace_id。