久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

軟件設(shè)計(jì)原則和模式--------單一指責(zé)原則

 linyu2688 2006-09-25
                                                                                 軟件設(shè)計(jì)原則和模式--------單一指責(zé)原則

      對于一個類,應(yīng)該僅有一個引起它變化的原因,,很簡單,,如果一個類承擔(dān)了多余一個的職責(zé),那么引起它變化的原因就會有多個,。也就等于把這些職責(zé)耦合在了一起,。當(dāng)然了一個職責(zé)的變化可能會削弱或者抑制這個類完成其他職責(zé)的能力。最終的結(jié)果就是這種耦合會導(dǎo)致一種脆弱的設(shè)計(jì),。例子:Retangle類有兩個方法,。一個方法把矩形繪制在窗體上,另一個方法計(jì)算矩形的面積:

                            多余一個的職責(zé)的情況
    2個不同的程序使用矩形類,,一個是計(jì)算幾何學(xué)方面的,,此時Rectangle類會為次幾何學(xué)程序提供幫助,,它從來是不會在窗口上繪制矩形的,。而另一個程序是有關(guān)圖形學(xué)方面的,他可能也會進(jìn)行一些幾何學(xué)方面的計(jì)算,,但是它肯定會在窗口上繪制矩形,。
       
所以說這個設(shè)計(jì)違反了單一職責(zé)原則,就是矩形類具有2個職責(zé):1:提供了一個矩形幾何形狀的數(shù)學(xué)模型,;2:把矩形的一個圖形用戶界面繪制出來,。這樣的設(shè)計(jì)可能會導(dǎo)致一個地方的改動會帶動其他的地方的一列改動。一個比較好的設(shè)計(jì)是把這兩個職責(zé)分離到兩個完全不同的類中,。如下:

  什么是職責(zé),?
可以理解為:變化的原因,如果你能想到多與一個的動機(jī)去改變一個類,,那么這個類就具有多于一個的職責(zé),。有時候我們很難做到這一點(diǎn),都是習(xí)慣以組的方式去考慮職責(zé),。如下面的接口看起來很合理:該接口所聲明的4個函數(shù)確實(shí)是調(diào)制解調(diào)器所具有的功能:

Interface Modem
{
   void dial(string pno);
  void hangUp();
  void send(
string c);
  void recv();
}

        然而,,該接口中卻顯示出兩個職責(zé),第一個職責(zé)是連接管理[dial,;hangUp],;第二個職責(zé)是數(shù)據(jù)通信[send;recv ],,問題是這兩個職責(zé)應(yīng)該被分開嗎,?這得依賴于應(yīng)用程序變化的方式了,。如果程序的變化會影響連接函數(shù)的簽名,那么這個設(shè)計(jì)就具有僵化性的味道,。因?yàn)閟end,;recv類必須要重新編譯。部署的次數(shù)常常會超過我們希望的次數(shù),。在這樣的情況下,,需要把這兩個職責(zé)分離開。但是另一方面,,如果應(yīng)用程序的變化方式總是導(dǎo)致這兩個職責(zé)的同時變化,,那么就不必分離他們了。
總結(jié):單一職責(zé)是所有原則中最簡單的之一,,也是最難正確運(yùn)用之一,。我們會自然的把職責(zé)結(jié)合在一起,軟件設(shè)計(jì)真正要做的許多內(nèi)容,,就是發(fā)現(xiàn)職責(zé)并把那些職責(zé)相互分離,。

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,,不代表本站觀點(diǎn),。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,,謹(jǐn)防詐騙,。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào),。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多