posts - 176, comments - 240, trackbacks - 0, articles - 7
          1. C語言抽象出了軟件所在的領(lǐng)域(domain): 由變量v1,v2,...和函數(shù)f1,f2,...組成的空間

          2. 面向?qū)ο?OOP)指出,在這一領(lǐng)域上可以建立分組(group)結(jié)構(gòu):一組相關(guān)的變量和函數(shù)構(gòu)成一個(gè)集合,我們稱之為對(duì)象(Object)。同時(shí)在分組結(jié)構(gòu)上可以定義一個(gè)運(yùn)算(推理)關(guān)系:  D > B, 派生類D從基類B繼承(inheritance),相應(yīng)的派生對(duì)象符合基類對(duì)象所滿足的所有約束。推理是有價(jià)值的,因?yàn)楦鶕?jù) D > B, B > A 可以自動(dòng)推導(dǎo)出 D > A,所有針對(duì)A的斷言在理論上對(duì)D都成立(這也就是我們常說的“派生對(duì)象 is a 基類對(duì)象”)。編譯器也能有點(diǎn)智能了。
             一個(gè)有趣的地方是,D > B意味著在D和B之間存在著某種差異,但是我們卻無法把它顯式的表達(dá)出來!也就是說在代碼層面上我們無法明確表達(dá) D - B是什么。為了把更多的信息不斷的導(dǎo)入到原有系統(tǒng)中,面向?qū)ο髢?nèi)置提供的方法是建立不斷擴(kuò)展的類型樹,類型樹每增長(zhǎng)一層,就可以多容納一些新的信息。這是一種金字塔式的結(jié)構(gòu),只不過是一種倒立的金字塔,最終基點(diǎn)會(huì)被不斷增長(zhǎng)的結(jié)構(gòu)壓力所壓垮。

          3. 組件技術(shù)(Component)本質(zhì)上是在提倡面向接口(interface),然后通過接口之間的組合(Composition)而不是對(duì)象之間的繼承(inheritance)來構(gòu)造系統(tǒng)。基于組合的觀念相當(dāng)于是定義了運(yùn)算關(guān)系:D = B + C。終于,我們勉強(qiáng)可以在概念層面上做加法了。
             組件允許我們隨意的組合,按照由簡(jiǎn)單到復(fù)雜的方向構(gòu)造系統(tǒng),但是組件構(gòu)成的成品之間仍然無法自由的建立關(guān)系。這意味著組件組裝得到的成品只是某種孤立的,偶然的產(chǎn)物。
             F = A + B + C  ? G = A + D + C。

          4. 在數(shù)學(xué)上,配備了加法運(yùn)算的集合構(gòu)成半群,如果要成為群(Group),則必須定義相應(yīng)的逆運(yùn)算:減法。 群結(jié)構(gòu)使得大粒度的結(jié)構(gòu)變換成為可能。
             F = A + B + C = A + D - D + B + C = (A + D + C) - D + B = G - D + B
             在不破壞原有代碼的情況下,對(duì)原有系統(tǒng)功能進(jìn)行增刪,這就是面向切面(AOP)技術(shù)的全部?jī)r(jià)值。


          Feedback

          # re: 從面向?qū)ο蟮矫嫦蚯忻?a name="Post">  回復(fù)  更多評(píng)論   

          2011-05-09 09:42 by SSINES
          有道理,易懂
          主站蜘蛛池模板: 桓台县| 萍乡市| 康乐县| 定边县| 临汾市| 凌云县| 宜兴市| 信丰县| 鸡东县| 雷州市| 云梦县| 棋牌| 宁蒗| 盈江县| 桂东县| 门头沟区| 红河县| 洛阳市| 雅江县| 大庆市| 江都市| 湘潭市| 札达县| 梨树县| 文成县| 宽城| 于都县| 石狮市| 高要市| 宝丰县| 那坡县| 永城市| 新丰县| 平阴县| 嵊州市| 石泉县| 宜宾县| 东阳市| 高雄县| 福清市| 松原市|