MVC架构模式
【纯个人理解,欢迎在评论区指正】
一、系统为什么要分层
为了让系统之中的各个组件分工明确,各司其职。降低代码耦合度,增强扩展力,提高可复用性。
二、什么是MVC架构模式
M即Model,代表数据、业务。V即View,代表视图、页面。C即Controller,代表控制器。
其中,C是核心,它没有与业务相关的任何操作,只是负责调度M和V。若调度M,就是让M进行业务处理和数据处理。若调度V,就是让V进行页面展示。MVC不存在三层架构中上下的依赖关系,而是一种相互协作关系。
- 优点
- 代码复用性高,耦合度低,方便维护,利于分工协作(在大型项目中,开发人员分工明确,各司其职,这提高了开发的效率,并且维护方便,降低了维护成本)
- 缺点
- 不适合小型的应用程序:花费大量的时间将MVC用到规模不大的程序中会得不偿失。功能代码不多,实现分层的代码却要不少。
- 降低系统的性能:由于视图不能直接访问数据库,而需要控制器来调度,因此降低了性能
- 增加了开发成本:项目架构变得复杂,对开发人员的要求更高了
图示MVC架构模式 |
---|
三、什么是三层架构
三层架构就是为了符合高内聚,低耦合
的思想,把各个功能模块划分为表示层(UI)
、业务逻辑层(BLL)
和数据访问层(DAL)
这三层架构。这三层之间属于**上下依赖**关系。每一层都有自己的职责,上一层不用关心下一层的实现细节,上一层通过下一层提供的对外接口来使用功能。只能是上一层调用下一层的功能,下一层不能调用上一层的而功能。
表现层就是与用户进行交互的界面,接收用户输入的数据和处理用户需要的数据并回显给用户;
业务逻辑层是表现层和数据访问层之间的桥梁,负责调用数据访问层完成一系列的数据操作,并将结果返回给表现层,它是针对具体问题所进行的业务操作;
数据访问层直接操作数据库,实现数据的增删改查操作。
- 优点
- 各层专注自己功能的实现,便于提高质量
- 层次划分清晰,提高开发效率
- 便于代码的复用
- 便于程序的扩展
- 缺点
- 降低了系统的性能。这是不言而喻的。如果不采用分层式结构,很多业务可以直接造访数据库,以此获取相应的数据,如今却必须通过中间层来完成
- 有时会导致级联的修改。这种修改尤其体现在自上而下的方向。如果在表示层中需要增加一个功能,为保证其设计符合分层式结构,可能需要在相应的业务逻辑层和数据访问层中都增加相应的代码。
- 增加了开发成本,项目架构变得复杂,对开发人员的要求更高了
用MVC类比三层架构(但不要混为一谈) |
---|
四、什么是高内聚,低耦合
- 高内聚:高内聚就是**模块内的各个元素彼此结合的紧密程度很高,即功能非常集中,没有分散。**(只专一的实现某个功能)
- 低耦合:在一个完整的系统中,模块与模块之间,应尽可能的独立存在,谁也不依赖于谁。
并不存在绝对的高内聚低耦合,当一个模块的内聚性非常高时,它所实现的功能一定是非常单一的。那么要想完成更加复杂,功能非常多样的业务,必定会提高对外模块的依赖性,这就增加了程序的耦合度。反之亦然。
所以,高耦合&高内聚 ~ 低耦合&低内聚便是两个极端。我们需要折中找到合适的平衡点。