直接回答
三层架构把系统划分为表现层(UI/接口)、业务逻辑层(领域规则)和数据访问层(持久化),各层只与相邻层交互。它的优点是职责清晰、便于分工和测试、单层技术可替换;缺点是层间调用带来额外开销,简单应用会显得笨重,且层间容易产生"透传式"的贫血代码。
展开解析
优点具体体现在:关注点分离让前端、后端、DBA 可并行开发;业务规则集中在一层,修改影响面可控;每层可独立单元测试(用 mock 隔离邻层);分层也是水平扩展的天然切分点(Web 层无状态扩容)。缺点在于:严格分层禁止跨层调用时,一个简单查询要经过三层样板代码;数据对象在各层间转换(DTO/VO/PO)增加冗余;业务增长后业务逻辑层容易膨胀成"大泥球"——分层本身不解决领域复杂度。实践中常见变体是允许"宽松分层"(表现层可直接读数据层做只读查询)换取效率。追问:三层与 MVC 的关系、与 DDD 四层架构的差异。