您的位置:首页 > 其它

关注分离

2015-07-14 20:56 295 查看
正文:

Iuar Jacobson在《AOSD中文版》中写道:

“好的架构必须使每个关注点相互分离,也就是说系统中的一个部分发生了变化,不会影响其他部分。即使需要改变,也能够清晰地识别出那些部分需要改变。如果需要扩展架构,影响将会最小化,已经可以工作的每个部分都将继续工作。”

我们首先总结出Iuar jacoboson话中的三个关键点:

上述论述中的三句话:
“系统中的一个部分发生了变化,不会影响其他部分。”

“即使需要改变,也能够清晰地识别出那些部分需要改变。”

“如果需要扩展架构,将影响最小化,已经可以工作的每个部分都将继续工作。”

这篇文章中我们用amazeui中对实现按钮和小徽章样式的类命名规范作为范例,来分析amazeui是如何在类的命名中应用关注点分离(SOC)的。

下面首先介绍一下如果要在amazeui中实现按钮和小徽章分别要做哪些工作:

/*实现按钮*/
<a class="”am-btn" href="”#”">Example</a>


三个类的作用依次是将<a>标签设置为amazeui按钮样式,将按钮颜色设置为绿色,将按钮大小设置为lg码。

虽然不是必须的,但是am-btn最好在最前面。

/*实现小徽章*/
<span class="”am-badge">Example</span>


三个类的作用依次是将<span>标签设置为amazeui小徽章样式,将小徽章颜色设置为绿色,将字号大小设置为lg码。

虽然不是必须的,但是am-badge最好在最前面。

也许大家没有用过amazeui,而且对上面代码也没有什么感触,那我就说一下我的理解:

假设我们要做一个框架(就叫Sornets框架吧=。=),只需要包含<span>标签小徽章和<a>标签按钮两个样式,那么我们可以将其分成button模块和badge模块。然后分别开发这两个模块,这两个模块可以单独拿出来使用(另一个模块的使用与否对当且模块没有任何影响),也就是说两个模块的耦合度为0。

这样,当我们需要增加Sornets框架的功能,比如要增加对图标(<i>)样式的支持,那么只需要再开发一个单独的icon模块出来就可以了;当我们需要button模块不但支持<a>标签,还要它支持input[type=submit]和input[type=reset]时,那么我们只需要单独修改button模块的代码,增加它的功能就好。

如果我们希望Sornets框架不再支持按钮样式呢?删除button模块就好了啊!

这在Sornets框架体量到达一定程度后简直会受益无穷!

那么这就完了吗?

Of Course Not!

我们知道了应当将代码分为不同的模块,那么,该遵循什么样的规则呢?

通过职责划分来分离关注点。

还是拿amazeui的CSS子系统来举例,在大的方面它以设置按钮样式和设置小徽章样式来划分模块的功能,而在模块内部,又根据修改样式的大小(size),颜色(color)分为不同的功能类。

可以利用软件系统各部分的通用性的不同进行关注点分离。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: