仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 634|回复: 8
打印 上一主题 下一主题

[学习教程] 高内聚低耦合的完成准绳-分别存眷点

[复制链接]
再现理想 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 14:19:16 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
呵呵,那你就关注微软的招聘信息以及别人的招聘经验啊,还有也不一定去做技术的,你如果真的想去就多了解了解。(其实我的意思是说想到微软做技术是很不容易的。分注关离点

如今已懂得了在计划体系时必要思索耦合和内聚两个要素,那末有无一种办法能够与日俱增地办理这两个成绩呢?怎样在计划软件体系时做到低耦合和高内聚呢?一个有助于完成低耦合和高内聚的准绳上是分别存眷点(SeparationofConcerns,SoC)。

1、判别存眷点
分别存眷点的中心在于将体系拆分红各不不异且最好没有堆叠的功效。每一个体系中的功效都暗示了一个存眷点,即体系的一个方面。下面提到的诸如功效、存眷点和方面等词语能够看作是同义词。存眷点能够映照到软件模块,且应当尽量地包管模块之间没有功效上的反复。

分别存眷准绳倡议我们一次只处置一个存眷点。这其实不代表此时要将一切体系其他的存眷点都抛在脑后,而是说当你决意用某个模块来完成某个存眷点以后,只必要聚精会神于完成该模块便可,从这个模块的角度思索,其他的存眷点都是不相干的。

2、模块化
详细来讲,分别存眷点是经由过程模块化代码和大批使用信息埋没来完成的。

模块化编程勉励我们利用分歧的模块来完成分歧的功效。模块具有本人的公然接口,能够和其他模块通讯,模块同时也包括大批的外部信息,供本身利用。

模块中只要公然接口表露出的成员才干被其他模块利用。外部数据要末被完全埋没起来,要末必需经由特定的选择过滤才干表露给内部。这类用公然接话柄现模块的体例界说了模块的举动,即模块的完成细节其实不会被其他模块晓得或会见。

3、信息埋没
信息埋没(InformationHiding,IH)是一条能用的计划准绳,指用流动的公然接口埋没软件模块的完成细节,以下降将来修正大概酿成的影响。依照如许的计划准绳,每一个模块仍可使用流动的接口来通讯,而不会遭到修正详细完成的影响。

信息埋没的一个罕见的典范完成就是C#或VisualBasic.NET中类的属性(拜见上面的代码实例)。属性称号暗示一个流动的接口,挪用者能够经由过程该接口猎取外部值。而范例外部能够经由过程良多体例(比方,利用私用字段,控件属性,缓存,ASP.NET的视图形态等)为内部供应值,乃至在修正完成细节的同时仍不损坏内部代码。
//使用了信息埋没的软件模块
PublicclassCustomer
{
//埋没的完成细节
Privatestring_name;

//公然流动的接口
PublicstringCustomerName
{
//埋没了完成细节
Get{return_name;}
}
}

信息埋没也叫做封装,这里我们要辨别一下准绳自己和准绳的详细使用。在面向工具编程的天下中,封装毫无疑问也是IH的一种使用。

一样平常来讲,分别存眷点准绳在分歧的编程理念中有着分歧的使用体例,模块化和信息埋没也是云云。

4、分别存眷点和编程理念
分别存眷点第一种撑持的编程理念是历程式编程,Pascal和C言语就个中的典型。在历程式编程中,分别存眷点是依托函数和历程来完成的。

跟着面向工具编程(OOP)言语(诸如Java,C++能及比来的C#和VisualBasic.Net)的呈现,我们入手下手利用类来分别存眷点。

不外,分别存眷点的观点不但限于编程言语,它超出了地道编程的范畴,还使用到了软件架构的良多方面。比方,在面向服务架构(Service-orientedarchitecture,SOA)中,服务用来暗示存眷点。分层架构也是基于分别存眷点准绳机关,比方,在两头层中,我们可使用工具/干系映照(Object/RelationalMapping,O/RM)工具来将耐久化和范畴模子分别开来。学习asp.net两个月有余了,除了对html、web控件比较熟悉(应该是说都能理解和接受)之外,竟不知道自己还会什么。看了两本书:《精通asp.net网络编程》(人民邮电出版社)、《asp.net实用案例教程》(清华大学出版社)。
再见西城 该用户已被删除
沙发
发表于 2015-1-18 12:52:33 | 只看该作者
使用普通的文本编辑器编写,如记事本就可以完成。由脚本在服务器上而不是客户端运行,ASP所使用的脚本语言都在服务端上运行,用户端的浏览器不需要提供任何别的支持,这样大提高了用户与服务器之间的交互的速度。
admin 该用户已被删除
板凳
发表于 2015-1-23 17:25:01 | 只看该作者
Servlet的形式和前面讲的CGI差不多,它是HTML代码和后台程序分开的。它们的启动原理也差不多,都是服务器接到客户端的请求后,进行应答。不同的是,CGI对每个客户请求都打开一个进程(Process)。
飘灵儿 该用户已被删除
地板
发表于 2015-1-31 18:42:29 | 只看该作者
Asp.net:首先来说,Asp.net和Asp没什么关系,看着像是升级版本什么的,其实没什么联系。Asp是脚本编程,用的是ASP语言,而ASP.net用的是C#语言,完全不同的东西。
乐观 该用户已被删除
5#
发表于 2015-2-6 22:23:04 | 只看该作者
但是java靠开源打出的一片天地,特别是在微软的垄断下能打开今天的局面还是有它的生命力的。
再现理想 该用户已被删除
6#
 楼主| 发表于 2015-2-19 04:13:40 | 只看该作者
有一丝可惜的是,这个系列太强了,Java阵营的朋友根本就是哑口无言...争论之火瞬间被浇灭,这不是我想这么早就看到的,但是值了。
愤怒的大鸟 该用户已被删除
7#
发表于 2015-3-6 12:52:07 | 只看该作者
主流网站开发语言之ASP:ASP是微软(Microsoft)所开发的一种后台脚本语言,它的语法和VisualBASIC类似,可以像SSI(ServerSideInclude)那样把后台脚本代码内嵌到HTML页面中。虽然ASP简单易用,但是它自身存在着许多缺陷,最重要的就是安全性问题。
简单生活 该用户已被删除
8#
发表于 2015-3-13 01:54:39 | 只看该作者
代码逻辑混乱,难于管理:由于ASP是脚本语言混合html编程,所以你很难看清代码的逻辑关系,并且随着程序的复杂性增加,使得代码的管理十分困难,甚至超出一个程序员所能达到的管理能力,从而造成出错或这样那样的问题。
莫相离 该用户已被删除
9#
发表于 2015-3-20 09:38:25 | 只看该作者
市场决定一切,我个人从经历上觉得两者至少在很长时间内还是要共存下去,包括C和C++,至少从找工作就看得出来,总不可能大家都像所谓的时尚一样,追捧一门语言并应用它。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2024-6-7 02:22

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表