欢迎来到.net学习网

欢迎联系站长一起更新本网站!QQ:879621940

您当前所在位置:首页 » ASP.Net » 正文

热门阅读

高内聚低耦合的实现原则-分离关注点

创建时间:2014年02月14日 10:42  阅读次数:(7831)
分享到:
分注关离点

现在已经了解了在设计系统时需要考虑耦合和内聚两个因素,那么有没有一种方法可以一劳永逸地解决这两个问题呢?如何在设计软件系统时做到低耦合和高内聚呢?一个有助于实现低耦合和高内聚的原则上是分离关注点(Separation of Concerns,SoC)。

1、鉴别关注点
分离关注点的核心在于将系统拆分成各不相同且最好没有重叠的功能。每个系统中的功能都表示了一个关注点,即系统的一个方面。上面提到的诸如功能、关注点和方面等词语可以看做是同义词。关注点可以映射到软件模块,且应该尽可能地保证模块之间没有功能上的重复。

分离关注原则建议我们一次只处理一个关注点。这并不代表此时要将所有系统其他的关注点都抛在脑后,而是说当你决定用某个模块来实现某个关注点之后,只需要全神贯注于实现该模块即可,从这个模块的角度考虑,其他的关注点都是不相关的。

2、模块化
具体来说,分离关注点是通过模块化代码以及大量运用信息隐藏来实现的。

模块化编程鼓励我们使用不同的模块来实现不同的功能。模块拥有自己的公开接口,可以和其他模块通信,模块同时也包含大量的内部信息,供自身使用。

模块中只有公开接口暴露出的成员才能被其他模块使用。内部数据要么被彻底隐藏起来,要么必须经过特定的筛选过滤才能暴露给外部。这种用公开接口实现模块的方式定义了模块的行为,即模块的实现细节并不会被其他模块知晓或访问。

3、信息隐藏
信息隐藏(Information Hiding,IH)是一条能用的设计原则,指用固定的公开接口隐藏软件模块的实现细节,以降低未来修改可能造成的影响。按照这样的设计原则,每个模块仍可以使用固定的接口来通信,而不会受到修改具体实现的影响。

信息隐藏的一个常见的典型实现就是C#或Visual Basic.NET中类的属性(参见下面的代码实例)。属性名称表示一个固定的接口,调用者可以通过该接口获取内部值。而类型内部可以通过很多方式(例如,使用私用字段,控件属性,缓存,ASP.NET的视图状态等)为外部提供值,甚至在修改实现细节的同时仍不破坏外部代码。
//应用了信息隐藏的软件模块
Public class Customer
{
//隐藏的实现细节
Private string _name;

//公开固定的接口
Public string CustomerName
{
//隐藏了实现细节
Get{return _name;}
}
}

信息隐藏也叫做封装,这里我们要区分一下原则本身和原则的具体应用。在面向对象编程的世界中,封装毫无疑问也是IH的一种应用。

一般来说,分离关注点原则在不同的编程理念中有着不同的应用方式,模块化和信息隐藏也是如此。

4、分离关注点和编程理念
分离关注点第一种支持的编程理念是过程式编程,Pascal和C语言就其中的典范。在过程式编程中,分离关注点是依靠函数和过程来实现的。

随着面向对象编程(OOP)语言(诸如Java,C++能及最近的C#和Visual Basic.Net)的出现,我们开始使用类来分离关注点。

不过,分离关注点的概念不仅限于编程语言,它超越了纯粹编程的领域,还应用到了软件架构的很多方面。例如,在面向服务架构(Service-oriented architecture,SOA)中,服务用来表示关注点。分层架构也是基于分离关注点原则构造,例如,在中间层中,我们可以使用对象/关系映射(Object/Relational Mapping,O/RM)工具来将持久化和领域模型分离开来。-
来源:
说明:所有来源为 .net学习网的文章均为原创,如有转载,请在转载处标注本页地址,谢谢!
【编辑:Wyf

打赏

取消

感谢您的支持,我会做的更好!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

最新评论

共有评论0条
  • 暂无任何评论,请留下您对本文章的看法,共同参入讨论!
发表评论:
留言人:
内  容:
请输入问题 32+16=? 的结果(结果是:48)
结  果: