高内聚,低耦合
在计算机程序设计中,秉着“高内聚,低耦合”的设计原则,尤其是在像 JAVA,PYTHON,CPP等一些面向对象的语言中体现更为明显
我估计到现在…很多人其实并不理解"高内聚,低耦合"的意义在哪儿
内聚 (模块内部),包括偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚
耦合 (模块与模块之间),包括非直接耦合、数据耦合、标记耦合、控制耦合、外部耦合、公共耦合
具体的…稍微百度一下
怎么理解高内聚呢?
就想象成一个旅游团出去旅游包了一个酒店,你肯定是和你家人住在一起,住在一个房间里,或者会要求住在连续的几个房间里吧(如果家里人比较多),但是你不会随随便便和一个陌生人一起住吧…毕竟…家里人还是方便一点,有什么事就可以直接家庭内部就解决了(比如你妈妈找到了你爸爸藏起来的私房钱,要批评教育一下…)这个过程在一个房间中很容易完成,而且也不怕别人说闲话啥的,因为对外是不可见的…或者有人想请你和父母一起参加一个活动的话,直接敲一个房间的门即可,毕竟你们是一家人一起行动,更加方便…
而低内聚呢?你爸爸在酒店1楼东边1号房间,你妈妈却在18楼西边5号房间,两边想要说说话都得打电话…同样的,有人邀请你和父母一起参加活动,还得西边通知一下,东边再通知一下,就很麻烦…
怎么理解低耦合呢?
平常军方的负责军方的事情,公安负责公安的,但是有些时候不是会军警联合执行某个任务吗?但是这时候会由指挥部统一下达命令,等到任务完成又回到自己的岗位上去做自己的事情
什么是MVC?
M: Model 也就是模型,一般来讲表示业务模型
V: View 也就是试图,一般用来展示给用户看的部分
C: Controller 也就是控制器
首先,MVC是一个模型,也是一个概念,甚至可以说是一种架构设计
扯了这么久高内聚低耦合,与MVC啥关系?
视图层,都说了是给用户看的,你管他看啥,反正他们直接操作的就是视图层,不管是网页界面,还是App界面,亦或者是…控制台界面…而且用户在这一层操作了数据或者发送了请求,又或者是把某些数据显示给用户,最多进行点简单的逻辑判断(当然,如果前后端分离的话,逻辑判断等那就也没有那么轻松了)
控制层,控制嘛,根据视图层给的请求,交给指定的业务层处理,处理完了再看该转发到哪一个视图啥的,视图那么多,或者说模型那么多,到底该怎么对应呢?这就得靠控制层喽
模型层,业务流程或者状态的处理亦或者业务的规则规定啥的就在这一层,本层的逻辑处理过程对于控制层,视图层都不可见,本来就与他们没啥关系,自己搞自己的,这不就是高内聚了吗?然后我模型层的东西需要整到视图层去,就只需要把需要的东东封装起来丢给控制层,然后控制层通过控制层自己的逻辑判断再丢给视图层,那,我模型层内部咋处理的,与控制层有啥关系?与视图层有啥关系? 而且,在模型层中有一个很重要的东西,就是数据存储模型, 也就是说,我需要将数据保存起来或者我需要从本地或者某个地方拿到数据(如:从数据库拿数据,保存数据到数据库… …操作)
在Java模型层之中,我们需要充分利用接口和类之间的关系,因为模型层之内也不光仅仅只有一个模型,会有很多模型,而且模型之间还有相互的关联,那么我们大多数时候只需要关心模型层的逻辑处理即可