目标:通过清晰分层,实现系统的高内聚、低耦合、可维护、可扩展和可复用。
分层价值:
1.职责分离:每层专注于特定功能(如展示逻辑、业务逻辑、数据存取)。
2.降低复杂度:只需关注特定层次,无需理解整个系统。
3.提升可维护性:修改一层(如更换数据库)不影响其他层。
4.增强可扩展性:可独立扩展某层(如增加应用服务器)。
5.促进复用:业务逻辑层可被不同前端(Web、App)复用。
经典分层模型:
1.表现层:
*职责:用户交互界面。接收请求,展示结果。处理用户输入验证、UI逻辑。
*常见组件:Web页面、移动App界面、APIGateway(处理路由、认证等)。
*关键:轻量化,不包含业务逻辑。
2.业务逻辑层:
*职责:系统的“大脑”。处理具体业务规则、流程编排、计算、状态管理。
*常见组件:服务类、领域模型、工作流引擎。
*关键:应独立于具体的数据源和表现方式,实现真正的业务逻辑复用。
3.数据访问层:
*职责:提供数据的持久化存储和访问抽象。屏蔽底层数据库细节。
*常见组件:ORM框架、DAO类、Reitory模式实现。
*关键:业务逻辑层通过接口调用此层,使其可灵活替换数据库(如MySQL换MongoDB)。
扩展与深化:
*基础设施层:提供通用技术服务(如日志、缓存、消息队列、配置管理、监控)。常被其他层依赖。
*领域层:在复杂领域驱动设计中,业务逻辑层可细分为更纯粹的领域模型层(封装业务概念和规则)和应用服务层(协调领域对象、事务、外部交互)。
*API层:在微服务或前后端分离架构中,表现层后端可抽象为独立的API层,提供统一接口契约。
分层原则:
*单一职责:每层功能明确。
*依赖方向:严格单向依赖。通常:表现层->业务层->数据层。避免循环依赖。
*接口隔离:层间通过定义良好的接口通信,而非直接依赖具体实现。
*抽象与封装:下层向上层隐藏实现细节。
常见陷阱:
*层间耦合过高:如业务层直接操作数据库细节。
*过度分层:增加不必要的复杂性。
*“烟囱式”分层:层间仅传递数据,未有效封装逻辑。
*循环依赖:破坏分层原则。
总结:分层是构建健壮系统的基石。选择合适的分层模型(经典三层或DDD多层),严格遵守依赖原则,清晰定义边界和接口,并警惕常见陷阱,才能化分层带来的收益,打造易于理解、维护和演进的系统架构。技术框架(如SpringMVC)通常内置分层支持,合理利用能事半功倍。
