<body>
<div class="style1"><h5></h5></div>
<div class="style2"><h5></h5></div>
<div class="style6"><h5></h5></div>
<div class="style3"></div>
<div class="style4"></div>
<div class="style5"></div>
<div class="style7"></div>
<div class="style8"></div>
<div class="style9"></div>
<div class="style10"></div>
<div class="style11"></div>
<div class="style12"></div>
<div class="style13"></div>
<div class="style14"></div>
<div class="style15"></div>
<div class="style16"></div>
<div class="style17"></div>
<div class="style18"></div>
<div class="style19"></div>
</body>
</html>
所謂單一職責(zé)原則,就是就一個類而言,應(yīng)該僅有一個引起它的變化的原因。換句話說,一個類的功能要單一,只做與它相關(guān)的事情。 我們來看一個例子: if(action.equals("load")&&tab.equals("1")){ 一看就知道這個類做了太多的工作,它既要load一個tab為1的頁面和一個tab為2的頁面;又要save一個tab為1頁面和一個tab為2的頁面。這個類的代碼我只截取了里面很少的一部分,絕大部分的代碼我都省略掉了。這段代碼寫到最后是越來越混亂,直到最后失敗。 對照著這個例子,我們再來分析一下為什么要遵守單一職責(zé)愿則: 第一、有助于我們分析和編碼的思路的清晰。當(dāng)你的代碼里有了三層或以上的if語句或for語句的嵌套的時候,你不要跟我說,你已經(jīng)把問題分析得很清楚了。多層嵌套的if或for語句只能說明你還沒有把問題分析清楚。 第二、使我們的編碼、測試和維護變得簡單。 第三、將一個個復(fù)雜的問題簡單化以后,易于代碼的重用。當(dāng)你的代碼的多個功能攪和在一起的時候,你是沒辦法考慮代碼的重用的,因為你的每一處代碼都有不同。 第四、易于系統(tǒng)的擴展。 好了,在這里一二三四的列舉單一職責(zé)的原則不管用,我們需要看看實際的效果才好。現(xiàn)在我們就來看看模式是怎么來遵守這一原則的: if(type.equals(“apple”)) 有了工廠,我們的客戶端就變成這樣: Fruit fruit = Factory.getInstance(type); 我們的客戶端調(diào)用起來多么的簡單,而且系統(tǒng)擴展起來也與客戶端無關(guān)。 我們再來看模板方法模式。 public abstract class Template { 這是一個模板類,它只做了一件事,就是所有子類的共同行為;然后去由它的子類單獨完成自己的不同的行為。 這樣的蓄意讓類的職責(zé)單一,擁有的好處是:第一、所有的子類的共同行為,只在模板類里構(gòu)造一次,實現(xiàn)了代碼的重用。第二、將各子類不同的行為分配到各子類里去,使得子類極為簡單,易于實現(xiàn)。 命令模式和策略模式的原理都相同,命令模式是對行為的封裝,而策略模式是對算法的封裝。兩者都是要把相同的關(guān)注點和對他們的調(diào)用分離開,如命令模式是將行為和對它們的調(diào)用分離開,而策略模式是將算法和對它們的調(diào)用分離開。這里我們只以命令模式來說明問題。 If(condition1) 命令模式可以方便的對上面的代碼進行優(yōu)化: public interface Common 客戶端: Common common; 命令模式通過將行為從調(diào)用者那里分離出來,達到了下面幾個目的:第一,分離關(guān)注,對各個行為進行單獨的關(guān)注,減少錯誤的出現(xiàn)。不管是對行為類還是它的調(diào)用者,都變得簡單。第二,行為類通過對接口的實現(xiàn),使得它們的調(diào)用者可以對它們進行動態(tài)綁定,增加了程序的靈活性和擴展性。 代理模式將一個類的核心功能和它的附加功能區(qū)別開來,分別放在不同的類里面,從而使每一個類的功能更加單一。 Public interface ProxyInterface 我們可以看到,通過代理模式,上面的MainClass類用來實現(xiàn)核心功能,而ProxyClass類用來實現(xiàn)附加功能,這樣使得兩個類的功能都非常簡單,易于實現(xiàn)。 總之,單一職責(zé)原則是一個既簡單又實用的原則。我們遵守了這一原則,可能會多寫一些類和代碼,但磨刀不誤砍柴工。該原則既有利于我們編碼思路的清晰,又大大增強了代碼的可維護性和擴展性。 |
當(dāng)你們有野心做領(lǐng)袖的時候,你有沒有服務(wù)于人的謙恭?
我們常常都想有所獲得,但我們有沒有付出的情操?
我們都希望別人聽到自己的聲音,我們有沒有耐心聆聽別人?
每一個人都希望自己快樂,我們對失落、悲傷的人有沒有憐憫?
每一個人都希望站在人前,但我們是否知道什么時候甘為人后?
你們都知道自己追求什么,你們知道自己需要什么嗎?
我們常常只希望改變別人,我們知道什么時候改變自己嗎?
每一個人都懂得批判別人,但不是每一個人都知道怎樣自我反省。
大家都看重面子,but do you know honor?
大家都希望擁有財富,但你知道財富的意義嗎?
各位同學(xué),相信你們都有各種激情,但你知不知道什么是愛?
這幾句話如此的精辟,不知道大家的感受如何~是否存在著激情。
聯(lián) 系 人 | 王小姐 | 郵政編碼 | 310013 |
電話號碼 | 0571-87176981 | ||
通訊地址 | 古墩路12號城市心鏡2-3-1001 |
聯(lián) 系 人 | 王小姐 | 郵政編碼 | 310012 |
電話號碼 | 87658021-803 | ||
通訊地址 | 西溪路525號浙江大學(xué)國家大學(xué)科技園A樓西區(qū)423 |