真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

設(shè)計(jì)模式之單一原則-創(chuàng)新互聯(lián)

定義

專注于為中小企業(yè)提供成都網(wǎng)站設(shè)計(jì)、網(wǎng)站建設(shè)服務(wù),電腦端+手機(jī)端+微信端的三站合一,更高效的管理,為中小企業(yè)圖木舒克免費(fèi)做網(wǎng)站提供優(yōu)質(zhì)的服務(wù)。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動(dòng)了千余家企業(yè)的穩(wěn)健成長(zhǎng),幫助中小企業(yè)通過(guò)網(wǎng)站建設(shè)實(shí)現(xiàn)規(guī)模擴(kuò)充和轉(zhuǎn)變。

一個(gè)類只能負(fù)責(zé)一項(xiàng)工作

發(fā)生的問(wèn)題

類A負(fù)責(zé)不同的工作:工作W1,工作W2.當(dāng)由于工作W1需要發(fā)生修改而需要修改類A時(shí),有可能會(huì)導(dǎo)致原本進(jìn)行正常的工作W2可能發(fā)生故障。

解決方法

   實(shí)行單一工作原則,分別建立兩個(gè)類A1,A2。這樣讓A1負(fù)責(zé)W1的功能,A2負(fù)責(zé)W2的功能。這樣,修改A1就不會(huì)修改W2的功能了,同理 修改A2就不會(huì)修改W1的功能。

   說(shuō)到單一工作原則,很多人不屑一顧,因?yàn)樗硖?jiǎn)單了。稍有經(jīng)驗(yàn)的程序員沒(méi)有學(xué)習(xí)過(guò)設(shè)計(jì)模式,沒(méi)有聽(tīng)說(shuō)單一工作原則,但是在實(shí)際開(kāi)發(fā)過(guò)程中自覺(jué)就實(shí)行運(yùn)用這一原則了,因?yàn)檫@是常識(shí),因?yàn)樵陂_(kāi)發(fā)過(guò)程,誰(shuí)都不希望因?yàn)樾薷囊粋€(gè)類而導(dǎo)致其他功能發(fā)生故障。而避免這一現(xiàn)象的發(fā)生,采用單一工作原則是不錯(cuò)的選擇。

設(shè)計(jì)模式之單一原則

運(yùn)行結(jié)果:

    老人會(huì)說(shuō)話??!

兒童會(huì)說(shuō)話??!

青年會(huì)說(shuō)話??!

程序運(yùn)行后,發(fā)現(xiàn)問(wèn)題了,并不是所有的生命都會(huì)說(shuō)話,比如動(dòng)物就不會(huì)說(shuō)話,啞巴也不會(huì)說(shuō)話。如果再細(xì)分的話,可以將living類分為normalpeople,animal和dumb。

package text2;
 
public class design {
  public static void main(String[] args) {
living normal=new living();
normal.speak("兒童");
normal.speak("老人");
normal.speak("青年");
dump d=new dump();
d.speak("啞巴");
Animal a=new Animal();
    a.speak("小鳥(niǎo)");
  }   
}
class living{
public void speak(String who)
{
       System.out.println(who+"會(huì)說(shuō)話??!");
}
}
class dump{
public void speak(String who)
{
System.out.println(who+"是不會(huì)說(shuō)話的!");
}
}
class Animal{
public void speak(String who)
{
System.out.println(who+"不會(huì)說(shuō)話的!");
}
}

運(yùn)行結(jié)果

兒童會(huì)說(shuō)話??!

老人會(huì)說(shuō)話??!

青年會(huì)說(shuō)話!!

啞巴是不會(huì)說(shuō)話的!

小鳥(niǎo)不會(huì)說(shuō)話的!

我們看到修改后的花銷是大的,除了living類修改了,而且還增加了類,我們直接可以修改living類,雖然違背了單一工作的原則,但是花銷變小了.

 代碼如下:

package text3;
 
public class design {
    public static void main(String[] args) {
    living l=new living();
    l.speak("老人");
    l.speak("兒童");
    l.speak("青年");
    l.speak("啞巴");
    l.speak("小鳥(niǎo)");
    }
 
}
class  living{
public void speak(String who)
{
if("老人".equals(who) || "兒童".equals(who) || "青年".equals(who)){
System.out.println(who+"會(huì)說(shuō)話!!");
}else if("啞巴".equals(who)){
System.out.println(who+"不會(huì)說(shuō)話!");
}else if("小鳥(niǎo)".equals(who)){
System.out.println(who+"不會(huì)說(shuō)話!");
}
}
}

運(yùn)行結(jié)果

老人會(huì)說(shuō)話!!

兒童會(huì)說(shuō)話!!

青年會(huì)說(shuō)話!!

啞巴不會(huì)說(shuō)話!

小鳥(niǎo)不會(huì)說(shuō)話!

可以看到,這種修改方式要簡(jiǎn)單的多,但是存在隱患時(shí):有一天需要將小鳥(niǎo)分類 麻雀 和 鷹 .則需要修改living類中speak方法啊.則對(duì)原有代碼修改會(huì)對(duì)調(diào)用 “老人”,”青年”,”兒童”等相關(guān)功能帶來(lái)風(fēng)險(xiǎn).也許有一天代碼量增多,運(yùn)行結(jié)果 正常人中的老人不會(huì)說(shuō)話了!! 這種修改時(shí)簡(jiǎn)單,但是違背了單一工作原則,到后來(lái)的隱患是大的.

package
 text4;

public class design {
    public static void main(String[] args) {
    Living l=new Living();
    l.speak("老人");
    l.speak("兒童");
    l.speak("青年");
    l.noSpeak("啞巴");
    l.noSpeak("小鳥(niǎo)");
    
}
}
class Living{
public void speak(String who)
{
System.out.println(who+"是會(huì)說(shuō)話的");
}
public void noSpeak(String who)
{
System.out.println(who+"不會(huì)說(shuō)話的");
}
}

運(yùn)行結(jié)果

老人是會(huì)說(shuō)話的

兒童是會(huì)說(shuō)話的

青年是會(huì)說(shuō)話的

啞巴不會(huì)說(shuō)話的

小鳥(niǎo)不會(huì)說(shuō)話的

可以看到,這種修改沒(méi)有改動(dòng)原來(lái)類中的方法,而是在類中新增加一個(gè)方法,這樣雖然說(shuō)違背了單一工作方式,但在方法級(jí)別上是符合單一工作原則的.因?yàn)樗鼪](méi)有修改原來(lái)的方法的代碼

這三種方法各有利弊,那么在實(shí)際的開(kāi)發(fā)中,采取哪種方法呢 ?這個(gè)要根據(jù)實(shí)際的開(kāi)發(fā)需求,

  只要邏輯簡(jiǎn)單,才可以代碼級(jí)別上違背單一工作原則,只有類中的方法足夠多,才可以在方法級(jí)別上違背單一工作原則

  單一工作原則的優(yōu)點(diǎn):

1 可以降低復(fù)雜度,一個(gè)類只負(fù)責(zé)一個(gè)功能,其邏輯肯定比負(fù)責(zé)多個(gè)功能簡(jiǎn)單的多.

2提高性的可讀性,提高系統(tǒng)的可維護(hù)性.

3修改代碼引起的風(fēng)險(xiǎn)降低.

需要說(shuō)明的是 單一工作原則不只是面向?qū)ο缶幊讨兴赜械?只要是模塊化程序設(shè)計(jì),都適用于單一工作原則.

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無(wú)理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國(guó)服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡(jiǎn)單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢(shì),專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場(chǎng)景需求。


當(dāng)前標(biāo)題:設(shè)計(jì)模式之單一原則-創(chuàng)新互聯(lián)
本文來(lái)源:http://weahome.cn/article/eocss.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部