关于MVC设计模式耦合度与解耦相关技术点总结

##一 摘要
在深入探究MVC设计模式之前,首先要弄清这样几个问题
####1.什么是MVC设计模
####2.为什么要使用MVC设计模
####3.MVC设计模存在的问题
####4.什么是耦合性
####5.如何去解耦

针对这些问题,我们来一一分析,解释.
###1.什么是MVC设计模
这里写图片描述

首先我们来看一下MVC设计模式的整个架构图
这个图,应该都不陌生了,现在简单的介绍下各个模块的职能.

MVC-----Model-View-Controller
MVVM -->M:Model 模型
V: View 视图
C: Controller 控制器

model:持有我们应用的数据,和定义怎么操控他。在你的应用里面就是Album 这个类

View:处理用户的操作和展示model,都是UIView的子类。在应用里面是AlbumView类

Controller:他的作用主要是用来协调View和model把数据展示到View上,就是应用的Viewcontroller类

 Model-View-Controller是一个用来组织代码的权威范式。Apple甚至是这么说的。在MVC下,所有的对象被归类为一个model,一个view,或一个controller。Model持有数据,View显示与用户交互的界面,而view controller调解model和view之间的交互。

###2.为什么要使用MVC设计模
主要有两个方面原因:

第一: 一种比较常用的设计模式,能够做到各层专注于各自的功能,易于扩展、管理等。
第二:  MVC使前后台相互分离,双方通过控制器来进行控制,且相互之间不影响。这样在编程的时候,前台可以安心做前台,后台可以专注于功能。且修改的时候非常容易。

###3.MVC设计模存在的问题

1、增加了系统结构和实现的复杂性。对于简单的界面,严格遵循MVC,使模型、视图与控制器分离,会增加结构的复杂性,并可能产生过多的更新操作,降低运行效率。 
2、视图与控制器间的过于紧密的连接。视图与控制器是相互分离,但确实联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。 
3、视图对模型数据的低效率访问。依据模型操作接口的不同,视图可能需要多次调用才能获得足够的显示数据。对未变化数据的不必要的频繁访问,也将损害操作性能。 
4、耦合性度比较高,目前,一般高级的界面工具或构造器不支持模式。改造这些工具以适应MVC需要和建立分离的部件的代价是很高的,从而造成MVC使用的困难。

下面来具体讲讲耦合性问题.

###4.什么是耦合性
下面是官方解释:

耦合度(Coupling)是对模块间关联程度的度量。耦合的强弱取决与模块间接口的复杂性、调用模块的方式以及通过界面传送数据的多少。

模块间的耦合度是指模块之间的依赖关系,包括控制关系、调用关系、数据传递关系。模块间联系越多,其耦合性越强,同时表明其独立性越差。

降低模块间的耦合度能减少模块间的影响,防止对某一模块修改所引起的“牵一发动全身”的水波效应,保证系统设计顺利进行。

MVC的本意是要分离模型和视图的耦合性,但是这种相关性确以一种隐式的方式(从系统详细设计阶段就开始了)引入了耦合性。

###5.如何去解耦

1.尽可能保持模块功能的独立性
2.引入更好的框架,例如MVVM设计框架
3.尽可能细化职责划分,这样也可以做到解耦
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

图解AI

你的鼓励是我最大的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值