关注分离

正文:


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

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


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


上述论述中的三句话:
“系统中的一个部分发生了变化,不会影响其他部分。”
“即使需要改变,也能够清晰地识别出那些部分需要改变。”
“如果需要扩展架构,将影响最小化,已经可以工作的每个部分都将继续工作。”



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


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


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


三个类的作用依次是将&lt;a&gt;标签设置为amazeui按钮样式,将按钮颜色设置为绿色,将按钮大小设置为lg码。
虽然不是必须的,但是am-btn最好在最前面。



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

三个类的作用依次是将&lt;span&gt;标签设置为amazeui小徽章样式,将小徽章颜色设置为绿色,将字号大小设置为lg码。
虽然不是必须的,但是am-badge最好在最前面。


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


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


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


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


那么这就完了吗?


Of Course Not!


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


通过职责划分来分离关注点。
还是拿amazeui的CSS子系统来举例,在大的方面它以设置按钮样式和设置小徽章样式来划分模块的功能,而在模块内部,又根据修改样式的大小(size),颜色(color)分为不同的功能类。
可以利用软件系统各部分的通用性的不同进行关注点分离。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值