随着业务越来越复杂,大量的代码纠缠在一起,会出现逻辑不清晰、各模块相互依赖、代码扩展性差、改动一处就牵一发而动全身等问题
1、常见的分层
1.1、MVC
将用户视图和业务处理隔离开,并且通过控制器连接起来,很好的实现了表现和逻辑的解耦。
1.2、另一种分层
- 表现层,顾名思义嘛,就是展示数据结果和接受用户指令的,是最靠近用户的一层
- 逻辑层里面有复杂业务的具体实现
- 数据访问层则是主要处理和存储之间的交互。
1.3 其他分层思想
OSI 网络模型,分为 7 层,从下到上:物理层、数据链路层、网络层、传输层、会话层、表现层、应用层。
TCP/IP 协议,它把网络简化成了四层,即链路层、网络层、传输层和应用层
2、分层有什么好处?
- 分层的设计可以简化系统设计,让不同的人专注做某一层次的事情。
- 分层之后可以做到很高的复用
- 分层架构可以让我们更容易做横向扩展
单一职责原则规定每个类只有单一的功能,在这里可以引申为每一层拥有单一职责,且层与层之间边界清晰;
迪米特法则原意是一个对象应当对其它对象有尽可能少的了解,在分层架构的体现是数据的交互不能跨层,只能在相邻层之间进行;
而开闭原则要求软件对扩展开放,对修改关闭。它的含义其实就是将抽象层和实现层分离,抽象层是对实现层共有特征的归纳总结,不可以修改,但是具体的实现是可以无限扩展,随意替换的。