<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 176, comments - 240, trackbacks - 0, articles - 7

    面向?qū)ο笾问较到y(tǒng)

    Posted on 2006-12-04 00:15 canonical 閱讀(1389) 評(píng)論(2)  編輯  收藏 所屬分類: 設(shè)計(jì)理論
    ??? 面向?qū)ο蠹夹g(shù)中最重要的概念是什么?在面向?qū)ο罄碚摪l(fā)展的初期,幾乎所有的正統(tǒng)聲音都在鼓吹繼承(inheritance)概念,言必稱虛擬函數(shù)和多態(tài)性。但是依賴?yán)^承這種推導(dǎo)關(guān)系來構(gòu)建龐大系統(tǒng)的弊病在實(shí)踐中逐漸暴露出來,隨著組件(Component)技術(shù)的發(fā)展,所謂的封裝概念逐漸被推崇為面向?qū)ο笏枷氲木A。在此過程中,接口(interface)概念作為系統(tǒng)細(xì)粒度正交分解的手段也逐漸發(fā)展起來。在軟件系統(tǒng)結(jié)構(gòu)的日益復(fù)雜化的今天,封裝概念開始成為了質(zhì)疑的對(duì)象。是否與一個(gè)概念相關(guān)的所有實(shí)現(xiàn)都要統(tǒng)一封裝到一個(gè)具體的對(duì)象中?伴隨著Java,C#等語言進(jìn)入主流程序界的AOP(Aspect Oriented Programming)給出了不同的答案。在AOP的環(huán)境中,Object不再是牢不可破的黑箱模型,而是成為了外部嵌入的方面(Aspect)的容器。在應(yīng)用AOP這種大范圍結(jié)構(gòu)操縱技術(shù)的對(duì)象構(gòu)成體系中,封裝不再是問題的核心,我們所關(guān)注的是面向?qū)ο蠹夹g(shù)中更為本原的概念:this指針。
    ??? 在純粹的技術(shù)層面上,面向?qū)ο笏傅氖紫仁且唤M相關(guān)性的聚集:它指代了一組相關(guān)的數(shù)據(jù)和函數(shù)。為了配合這種相關(guān)性的表達(dá),在調(diào)用形式上發(fā)生了重大變化。從全局函數(shù)的調(diào)用方式轉(zhuǎn)變到了基于對(duì)象指針的調(diào)用方式:
    ??? func(this) ==> this.func();
    ??? 這里關(guān)鍵性的區(qū)別在于從全局性的,絕對(duì)的表達(dá)方式轉(zhuǎn)變?yōu)榫钟蚧模鄬?duì)的表達(dá)方式。this指針限定了一個(gè)知識(shí)域(domain),調(diào)用對(duì)象函數(shù)是在限定知識(shí)域的情況下提供一些相對(duì)信息,即調(diào)用的時(shí)候只需要相對(duì)知識(shí)。例如現(xiàn)在界面上有兩個(gè)按鈕,其中一個(gè)跳轉(zhuǎn)到編輯頁面,另外一個(gè)跳轉(zhuǎn)到列表頁面。為了表達(dá)出這兩個(gè)按鈕的不同,我們只需要提供非常少的信息。
    ??? 〈input value="編輯" onclick="stdPage.gotoEditPage('${pkValue}')" /〉
    ??? 〈input value="列表" onclick="stdPage.gotoListPage()" /〉
    所有的公共知識(shí)集中在stdPage這個(gè)對(duì)象指針中。所謂組件技術(shù),關(guān)鍵點(diǎn)也正在于這里。基于一個(gè)給定的組件對(duì)象,我們只需要知道如何調(diào)用它的函數(shù),就可以使系統(tǒng)呈現(xiàn)不同的表現(xiàn)形態(tài)。我們所關(guān)心的并不是如何構(gòu)造這個(gè)知識(shí)域(對(duì)象本身),而是如何使用相對(duì)知識(shí)構(gòu)造出我們最終所需的系統(tǒng)。封裝性使我們擺脫了對(duì)系統(tǒng)全局知識(shí)的依賴。
    ?? 從形式主義的角度上說,任何一種調(diào)用方式都只是一種表達(dá),它的具體含義需要一個(gè)詮釋的步驟。基于對(duì)象指針的調(diào)用形式直接導(dǎo)向了詮釋的多樣化:我們只需要替換this指針,就可以改變整個(gè)一組調(diào)用的具體含義。傳統(tǒng)上,對(duì)象指針是封閉的,指代的是具體的實(shí)現(xiàn),所有的信息都必須來自于對(duì)象指針本身,這造成詮釋的局限性。但是在AOP的支持下,詮釋可以不僅僅是源于其內(nèi)的,而且可以是發(fā)自其外的。例如基于POJO的ORM框架中,我們只需要純粹的基于對(duì)象自身的知識(shí)對(duì)其進(jìn)行操作,ORM引擎通過enhance POJO對(duì)象來重新將其詮釋為對(duì)數(shù)據(jù)庫(kù)的持久化操作。

    Feedback

    # re: 面向?qū)ο笾问较到y(tǒng)  回復(fù)  更多評(píng)論   

    2006-12-04 16:35 by javabeginer
    太深?yuàn)W了。。。不知道何時(shí)能夠讀懂,學(xué)習(xí)!

    # re: 面向?qū)ο笾问较到y(tǒng)  回復(fù)  更多評(píng)論   

    2007-08-18 04:44 by ObjectTutor
    有見解,喜歡
    我覺得封裝就是做接口的過程
    歡迎到我家玩,也看看我對(duì)面向?qū)ο蟮睦斫?/div>
    主站蜘蛛池模板: 在线观看免费视频资源| ZZIJZZIJ亚洲日本少妇JIZJIZ| 亚洲AV永久无码精品一福利| www.亚洲一区| 69av免费观看| 曰批免费视频播放免费| 亚洲一本综合久久| 国产成人免费网站在线观看| 日韩免费在线视频| 国产亚洲精品美女2020久久| 亚洲v高清理论电影| 免费欧洲毛片A级视频无风险| 99久久免费中文字幕精品| 日本亚洲高清乱码中文在线观看| 久久久亚洲精品国产| 在线观看亚洲免费| 亚洲大片免费观看| 日本一区二区在线免费观看 | 好大好深好猛好爽视频免费| 一区二区视频在线免费观看| 中文字幕在线日亚洲9| 亚洲国产精品久久久天堂| 免费人成网站在线高清| 美丽的姑娘免费观看在线播放 | 亚洲国产成人综合精品| 99久久亚洲综合精品成人网| 亚洲精品tv久久久久| 女人与禽交视频免费看| 青青草无码免费一二三区| 2022免费国产精品福利在线| 亚洲AV无码资源在线观看| 亚洲视频在线免费看| 亚洲第一AAAAA片| 久久久久亚洲av毛片大| 亚洲国产中文字幕在线观看| 两个人看的www免费高清| 亚洲人成自拍网站在线观看| 亚洲高清国产拍精品26U| 国产免费av一区二区三区| 无人在线观看完整免费版视频| 桃子视频在线观看高清免费视频 |