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

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

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

    我愛(ài)oo,我愛(ài)java

    交流blog QQ:421057986 oofrank@donews

    白馬非馬的面向?qū)ο蠓治?/a>

     公孫龍,六國(guó)時(shí)辯士也。疾名實(shí)之散亂,因資材之所長(zhǎng),為“守白”之論。假物取譬,以“守白”辯,謂白馬為非馬也。

      以馬作為進(jìn)行問(wèn)題域進(jìn)行建模,已知存在白馬這種類(lèi)型。顯然存在馬的超類(lèi),并且馬類(lèi)包含一個(gè)屬性-顏色,是否需要建立白馬的子類(lèi)呢?顯而易見(jiàn)的是,當(dāng)馬的顏色屬性是白色時(shí),馬的一些實(shí)例表達(dá)了一個(gè)白馬的特殊實(shí)例群(由此我們可以得知:白馬顯然是馬),根據(jù)里氏替換原則,子類(lèi)型必須能夠替換掉它們的基類(lèi)型,顯然在分析了馬的行為模式以后,我們可以得出結(jié)論:白馬可以替換馬。----!難道真的要建立白馬、黑馬、X馬的子類(lèi)嗎?
       我認(rèn)為可以從以下幾方面進(jìn)行分析。

    1、類(lèi)的職責(zé)(很大程度上等同于服務(wù)能力,操作方式):
        設(shè)計(jì)一個(gè)類(lèi),首先要從類(lèi)職責(zé)的分析入手,一個(gè)類(lèi)要承擔(dān)響應(yīng)的職責(zé),反過(guò)來(lái)說(shuō)同樣的職責(zé)應(yīng)該由同樣的類(lèi)承擔(dān),否則會(huì)造成類(lèi)泛濫,實(shí)例孤單的狀況。如果領(lǐng)域內(nèi)馬和白馬承擔(dān)同樣的職責(zé),應(yīng)該只建立馬一個(gè)類(lèi),不應(yīng)該只見(jiàn)樹(shù)不見(jiàn)林,造成不抽象的類(lèi)的產(chǎn)生。

    2、類(lèi)的行為模式(當(dāng)類(lèi)承擔(dān)響應(yīng)職責(zé)時(shí),如何擴(kuò)展):
       分析一個(gè)類(lèi)要從類(lèi)的行為模式入手,既然一個(gè)類(lèi)要承擔(dān)責(zé)任,其承擔(dān)的責(zé)任表現(xiàn)方式是否一樣呢呢?這就是她的行為模式,這也是里氏替換原則主要起作用的地方,如果兩個(gè)類(lèi)的職責(zé)相當(dāng),但行為模式不同則不能成為超類(lèi)和子類(lèi)的關(guān)系(比如"著名"的正方形不是長(zhǎng)方形問(wèn)題)。馬類(lèi),作為超類(lèi),基于一些特殊的行為方式:吃草,跑...,對(duì)于白馬她的行為模式和馬是一樣的,并沒(méi)有不同,所以白馬是馬而非馬的同根繼承子類(lèi)。對(duì)于長(zhǎng)方形和正方形都是具有相同計(jì)算面積算法(職責(zé))的四方形的子類(lèi)。

    -------以下是關(guān)于此事的一些擴(kuò)展分析-----------
    3、子類(lèi)的產(chǎn)生:
        何時(shí)需要產(chǎn)生子類(lèi)呢:是對(duì)其父類(lèi)的職責(zé)進(jìn)行擴(kuò)展,白馬沒(méi)有對(duì)父類(lèi)的職責(zé)進(jìn)行擴(kuò)展,所以不是馬的子類(lèi)。首先子類(lèi)要擴(kuò)展超類(lèi),其次子類(lèi)不能重寫(xiě)或廢除超類(lèi)的職責(zé)。

    4、屬性,狀態(tài)的區(qū)別(類(lèi)的域)
       對(duì)于一些類(lèi),在狀態(tài)不同時(shí),會(huì)有不同的表現(xiàn)(狀態(tài)機(jī)模式),所以,類(lèi)的getter,setter的部分包含兩種不同的特性,對(duì)于屬于狀態(tài)的部分,是我們要仔細(xì)分析的,而"白"馬則屬于屬性類(lèi)(非狀態(tài))的域, 一般來(lái)講,一個(gè)類(lèi)的實(shí)例要能提供相應(yīng)的差異服務(wù)(由于狀態(tài)不同)最好使用不變模式[生存周期狀態(tài)不變]或狀態(tài)機(jī)[生存周期有狀態(tài),但狀態(tài)不由調(diào)用者控制]來(lái)實(shí)現(xiàn)。

    5、抽象類(lèi)和接口
       由于java的單根繼承特性,很多設(shè)計(jì)人員不敢定義抽象類(lèi)為繼承樹(shù)根,一定要先定義馬的接口,在建立抽象馬,作為一種"準(zhǔn)規(guī)范"無(wú)可厚非,但我認(rèn)為這是不愿承擔(dān)責(zé)任的表現(xiàn),有行為的基類(lèi)應(yīng)該可以(必須?)從類(lèi)定義開(kāi)始,避免白馬類(lèi)(一旦馬成為接口,白馬的產(chǎn)生就更加"名正言順"了)的出現(xiàn).將來(lái)如果發(fā)生變化可以通過(guò)重構(gòu)(導(dǎo)出接口和使用委托),解決問(wèn)題。

    6、對(duì)象的創(chuàng)建(組裝)和使用應(yīng)該分開(kāi)
       既然對(duì)象的狀態(tài)如此重要,屬性有有很大程度的不變性(白馬在構(gòu)造時(shí)就用該是白的,并且一生不變),而騎馬的人不必要求馬的屬性(!),所以,我們應(yīng)該將馬的構(gòu)造和使用分開(kāi),使領(lǐng)域模型更清晰。使用一些Ioc容器,比如Spring就能很好的解決這些問(wèn)題。
     
    7、分析問(wèn)題的領(lǐng)域
       說(shuō)了這么多,有一個(gè)問(wèn)題;如果有一個(gè)馬的研究機(jī)構(gòu),專(zhuān)門(mén)對(duì)不同顏色的馬進(jìn)行專(zhuān)題研究,馬的顏色可能會(huì)對(duì)馬的行為有很大影響,例如戰(zhàn)馬如果是黃色(綠色,哈哈)更利于偽裝,此時(shí)"白"可能是一個(gè)很關(guān)鍵的問(wèn)題,顏色會(huì)影響到不同的偽裝策略,此時(shí)將白馬作為馬的一個(gè)子類(lèi)則是必須的!所以問(wèn)題域不同,類(lèi)的設(shè)計(jì)就不同,生活中的問(wèn)題域比較清晰(生物學(xué)家和廚師對(duì)馬的理解不同),而軟件建模時(shí)往往問(wèn)題域混雜,這也是OO設(shè)計(jì)時(shí)比較困難的問(wèn)題,所以分析問(wèn)題域也是非常重要的設(shè)計(jì)問(wèn)題。

    posted on 2006-01-19 14:16 兼聽(tīng)則明 閱讀(1060) 評(píng)論(4)  編輯  收藏 所屬分類(lèi): oo

    評(píng)論

    # re: 白馬非馬的面向?qū)ο蠓治? 2006-01-19 20:33 JavaXP

    這不是彥宏博士的東西了?
      回復(fù)  更多評(píng)論   

    # re: 白馬非馬的面向?qū)ο蠓治? 2006-01-19 21:41 兼聽(tīng)則明

    呵呵,真的不知呀,我隨便想到瞎寫(xiě)的  回復(fù)  更多評(píng)論   

    # re: 白馬非馬的面向?qū)ο蠓治? 2006-02-08 11:08 太霸道

    個(gè)人認(rèn)為,只要明確了需求,設(shè)計(jì)正方形為矩形的子類(lèi)還是不難的  回復(fù)  更多評(píng)論   

    # re: 白馬非馬的面向?qū)ο蠓治?a name="Post"> 2006-02-10 14:33 兼聽(tīng)則明

    設(shè)計(jì)正方形為矩形的子類(lèi)? 什么意思?  回復(fù)  更多評(píng)論   


    只有注冊(cè)用戶(hù)登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲精品不卡视频| a在线视频免费观看在线视频三区| 狼友av永久网站免费观看| www永久免费视频| 国产在线观看xxxx免费| 亚洲视频一区在线观看| 99久久国产免费-99久久国产免费 99久久国产免费中文无字幕 | 亚洲人6666成人观看| 亚洲精品成人片在线观看| 99久久人妻精品免费二区| 亚洲丶国产丶欧美一区二区三区| 在线观看免费a∨网站| 热久久这里是精品6免费观看| 亚洲丝袜中文字幕| 国产国拍精品亚洲AV片| 成人毛片18女人毛片免费| a毛片在线免费观看| 337p日本欧洲亚洲大胆人人| 亚洲第一页日韩专区| 一本久久A久久免费精品不卡 | 无码天堂亚洲国产AV| 亚洲图片一区二区| 亚洲AV日韩精品一区二区三区| 免费国产高清毛不卡片基地| 久久久久亚洲AV片无码下载蜜桃| 思思re热免费精品视频66 | 免费a级毛片在线观看| 国产大片91精品免费观看不卡| 一道本在线免费视频| 亚洲欧洲AV无码专区| 亚洲精品一区二区三区四区乱码| 国产精品亚洲不卡一区二区三区| 免费看a级黄色片| 91成人免费观看网站| 美女视频黄a视频全免费网站色窝| 日本高清免费中文在线看| 亚洲JLZZJLZZ少妇| 亚洲中文字幕无码一去台湾| 亚洲人成电影在在线观看网色| 国产亚洲精品成人AA片新蒲金| 亚洲&#228;v永久无码精品天堂久久|