能不能给出一些具体的示例来说明一下。网上很多都是长篇大论,却一行代码也没有。
1
csunny 2017-04-26 20:25:13 +08:00
感觉这个看示例再多,可能也不如实际工作中碰到体会深刻。
|
2
v1024 2017-04-26 20:37:29 +08:00 via iPhone 3
简单来说,高内聚=一个组件相关的东西都在一个目录里,低耦合=组件依赖尽量少
|
3
abcbuzhiming 2017-04-26 22:56:13 +08:00 1
IOS 的软件就属于典型的高内聚,低耦合,依赖的东西,都装在软件包里,对外没依赖,缺点就是软件体积贼大。反例就是 windows 程序, dll 运行库,彼此高度依赖
|
5
cxh116 2017-04-27 08:12:48 +08:00 via Android 2
你的代码能够很方面的写单元测试,就表示已经实现了 高内聚、低耦合
|
6
mazyi 2017-04-27 08:36:59 +08:00 via iPhone 1
@abcbuzhiming 不是把库包含进软件包就是内聚,也不是不依赖外部就是耦合。
|
7
blacklee 2017-04-27 08:43:57 +08:00 1
好了开始上课了。
但是只有例子没有代码。例子是大家都很熟悉的爬虫。 高耦合的代码:只有一个模块,以及一种类型的 task。 这个模块拿到 task,开始下载网页(比如 V2EX 的首页)——解析网页——拿到帖子列表数据 低耦合的代码:多个模块,多种类型的 task (就是子任务)。 拿到抽象 task,生成下载网页的 task,交给下载模块。 下载模块下载完毕,生成解析网页的 task,交给存储模块。 存储模块拿到数据,自己决定怎么搞。 |
8
abcbuzhiming 2017-04-27 08:53:20 +08:00
@mazyi 我知道啊,说着玩玩罢了,只不过要形象的解释,那这例子比一般你给人解释,不要依赖具体实现,要面向接口啥的要现实多了,当然实际解释起来也挺麻烦的
|
9
thekll 2017-04-27 18:29:58 +08:00 via iPhone
我的理解:高内聚就是内部功能组件尽可能的小和单一,同时避免暴漏不必要的接口;高耦合即尽可能的抽象外部接口,使接口服务和内部实现无关。
|