<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)則明 閱讀(1061) 評(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)航:
     
    主站蜘蛛池模板: 91精品国产免费入口| 我要看WWW免费看插插视频| 亚洲成人网在线播放| 亚洲视频国产精品| 男人的好看免费观看在线视频| 亚洲日本VA午夜在线电影| 国产午夜无码精品免费看 | 亚洲AⅤ视频一区二区三区| 精选影视免费在线 | 久久国产成人亚洲精品影院| 久久美女网站免费| jiz zz在亚洲| 国产AV无码专区亚洲AVJULIA| 免费无码A片一区二三区| 国产精品无码永久免费888| 亚洲国产综合精品| 国产亚洲精品影视在线产品 | 国产午夜鲁丝片AV无码免费| 免费91最新地址永久入口 | 亚洲人成网站免费播放| 国产AV无码专区亚洲Av| 韩国18福利视频免费观看| 久久国产精品萌白酱免费| 国产亚洲精品国产福利在线观看| 亚洲美女自拍视频| 亚洲人成色77777| 国产美女无遮挡免费视频 | 国产在线观看免费完整版中文版| 一级毛片免费视频| 国产免费一区二区三区免费视频| 亚洲午夜无码久久久久小说| 亚洲综合一区二区精品导航| 亚洲五月午夜免费在线视频| 精品无码国产污污污免费| 无码国产精品一区二区免费式直播 | 亚洲第一成年网站视频| 亚洲欧洲综合在线| 无码久久精品国产亚洲Av影片| 亚洲视频在线免费| 午夜亚洲国产成人不卡在线| 免费羞羞视频网站|