Quantcast
Channel: CSDN博客移动开发推荐文章
Viewing all articles
Browse latest Browse all 5930

IOS 动画设计(1)——高内聚,低耦合原则

$
0
0

模块独立性(单一职能原则)指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单,两个定性的度量标准就是耦合性和内聚性。

耦合性也称块间联系。是软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。

内聚性又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。

耦合性与内聚性是模块独立性的两个定性标准,将软件系统划分模块时,尽量做到高内聚低耦合,提高模块的独立性,为设计高质量的软件结构奠定基础。同样的,在 IOS 动画设计中,也同样要求做到高聚类,低耦合。下面举例说明。

需求很简单,就是画一条横线,2秒后向右位移(持续1秒),4秒后向右位移并在1秒内逐渐消失。
传统的比较弱的新手写法如下:
这里写图片描述
把所有的语句都写在一个函数中,造成 viewDidLoad 函数体臃肿,且可读性较差,给后期维护与修改带来不便。

秉承高聚类、低耦合的原则,现做修改如下:
这里写图片描述

这里写图片描述
将动画分解为“出现”和“隐藏”两种属性,并将单一的某种动画属性(此处为线条的动画属性)封装成类。

此时,便使用高内聚、低耦合的原则设计出了动画,每个模块都有其单一职能。由此,可以作出相应总结与理解:

1. 高内聚
具有高内聚性的一个元素,只完成它职责内的事情,而把那些不在它职责内的事情拿去请求别人来完成。如果我是一个项目经理,我的职责是监控和协调我的项目各个阶段的工作。当我的项目进入需求分析阶段,我会请求需求分析员来完成;当我的项目进入开发阶段,我会请求软件开发人员来完成;当我的项目需要测试的时候,我会请求测试人员……如果我参与了开发,我就不是一个高内聚的元素,因为开发不是我的职责。“高内聚”给软件项目带来的优点是:可读性强、易维护和变更、支持低耦合、移植和重用性强。

2. 低耦合
低耦合就是要求在我们的软件系统中,某元素不要过度依赖于其它元素。举个例子,一个程序有50个函数,这个程序执行得非常好;然而一旦你修改其中一个函数,其他49个函数都需要做修改,这就是高耦合的后果。“低耦合”给软件项目带来的优点是:易于变更、易于重用。

3. 高内聚与低耦合的类比理解
高内聚、低耦合讲的是程序单位协作的问题, 可以这样理解,一个企业的管理, 最理想的情况就是各个部门各司其职,井然有序,互不干涉, 但是需要沟通交流的时候呢, 各个部门都可以找到接口人专门负责部门沟通以及对外沟通。
在软件设计中, 就是说各个模块要智能明确, 一个功能尽量由一个模块实现, 同样,一个模块最好只实行一个功能。这个是所谓的“内聚”; 模块与模块之间、系统与系统之间的交互,是不可避免的,但是我们要尽量减少由于交互引起的单个模块无法独立使用或者无法移植的情况发生, 尽可能多的单独提供接口用于对外操作, 这个就是所谓的“低耦合”。
但是实际的设计开发过程中,总会发生这样那样的问题与情况,真正做到高内聚、低耦合是很难的,很多时候未必一定要这样,更多的时候“最适合”的才是最好的,不过,理解思想,审时度势地使用,融会贯通,灵活运用,才是设计的王道。

作者:huangfei711 发表于2016/10/2 20:52:59 原文链接
阅读:106 评论:0 查看评论

Viewing all articles
Browse latest Browse all 5930

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>