|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
大型的应用一般不会用这些框架(因为性能考虑);开发人员根据需要选择用一些框架,也可以不选用框架;不用框架并不代表要自己写框架;修改框架的可能性更小。
24.对象封装
阴阳地舆两分张,隐者为阴显者阳 ——《玉髓经.曜星论》
“用广东话说,真是有型有料又有性情啊!”叹号啧啧连声,“这那里是在计划软件,明白是在计划心仪的对象嘛。”
“我们可不就是在谈对象计划吗?”冒号笑着反问,“在OOP的天下里,每位程序员都是造物主。坚持热忱、专注力和审美情味,说不定哪一天就像希腊神话里的皮格玛利翁一样,雕塑的玉人变活了。”
“哇,那可就美了!”逗号极尽夸大之调。
全班捧腹大笑。
“方才提到笼统是OOP三年夜基础特征的基本,上面我们逐一分析。”冒号很快收拢了话题,“首当其冲的是封装性。记得后面谈对象范式时,引号曾试图为我们注释封装性,惋惜被我无情地打断了。如今我们请他持续解说吧。”
在世人逗趣式的掌声中,引号竟有些大方了:“所谓封装性,就是将数据与相干举动包装在一同以完成信息埋没。”
“几近自作掩饰。”冒号歌颂得有些守旧,“那末封装(encapsulation)与信息埋没(informationhiding)有区分吗?”
“应当是一回事吧。”在冒号的逼视下,引号有些夷由了,“嗯。。。信息埋没是一种准绳,而封装是完成这类准绳的一种体例。”
“言之有理!”冒号这回歌颂得很爽性,“只管年夜多半参考书对两者不加辨别,我仍是要剖析一番。实在狭义的封装仅仅只是一种打包,即package或bundle,是密封的但能够是通明的。大概说,封装就是把一些数据和办法装在一个关闭的盒子里——多是黑盒子,也多是白盒子。从语法上说,这是OOP与诸如C之类的历程式言语最年夜的分歧。叨教这带来甚么效果?”
句号反响很快:“这即是引进了一种新的模块机制,将相干的数据和感化其上的运算绑缚在一同构成被称为类的模块。”
“回覆准确!”冒号很中意,“方才我们用C完成了行列,但因为C不撑持封装,只能以文件情势来分别模块,明显不如类分别那末便利和了了。别的,封装另有语法糖(Syntacticsugar)效果。”
问号猎奇地问:“甚么是语法糖?是否是很甜?”
“所谓语法糖,就是一些语法上的长处。它不是中心语法,并没有供应任何分外的功效,只是用起来更简便有用、更天然便利,看起来更酷、更炫罢了。”冒号成心用时兴的辞汇来弥补代沟,“我们晓得,历程式函数接纳谓语(主语,宾语)的情势,而OOP接纳主语.谓语(宾语)的情势。”
“哦,就是谁人狗吃屎和吃狗屎啊,那可不甜。”逗号又来插科讥笑。
世人笑得前仰后合。
冒号不为所动:“再拿行列为例,假如增添一个行列成员,用方才的C完成,我们必要写下:queue_add(queue,item)。假设用Java来完成,只需写queue.add(item)。因为封装使add绑定在queue上,一方面能够将对象queue前置,既更切合天然言语,又少敲一个字符;另外一方面,这类绑定使add范围于Queue类中,因而不用加上‘queue_’的前缀以防与其他类的办法函数名相抵触。这一样节俭了打字,也使接口更复杂。”
句号提出:“假如C撑持函数重载(overload),那末‘queue_’的前缀便可省往。”
“你说的既对也不合错误。”冒号辩证地评判,“假如C撑持重载,该前缀切实其实能省往;但从另外一角度看,即便Java或C++不撑持重载,前缀用样能省往。由于函数add已不再是全局函数,Queue类就是其高低文(context)。换句话说,分属分歧类的函数是不成能发生歧义(ambiguity)的,哪怕它们的署名(signature)千篇一律。因而我们要把功烈记在封装的名下。”
句号心服口服。
<p>
到时我们不用学struts,不用学spring,不用学Hibernate,只要能把jsf学会了,完全可以替代所有的框架,包括AJAX,都知道AJAX并不是新技术,虽说我没深入学习jsf但我认为jsf应该已经能通过其它技术替代AJAX,实现无缝刷新。 |
|