Android開發設計模式六大原則之單一職責原則
學習Android設計模式也有一段時間了,這段時間工作不忙,想把所學知識沉澱下來,決定把設計模式的知識做一個系列,方便你我。廢話不多說。
學習設計模式難免要先學習六大原則,因為在後面的設計模式運用過程中,都或多或少的遵循這六大原則。所以要想精通設計模式,六大原則必須要熟練掌握。

本篇要講的是單一職責原則:
1、單一職責原則(Single Responsibility Principle,簡稱SRP )
解釋:應該有且僅有一個原因引起類的變更,通俗來講就是一個類只幹一件事。
看程式碼:
//從檔案中讀取,然後計算 class Calculator { //相加 public int add() throws NumberFormatException, IOException{ //獲取檔案內容 File file = new File("E:/data.txt"); BufferedReader br = new BufferedReader( new FileReader(file)); int a = Integer.valueOf(br.readLine()); int b = Integer.valueOf(br.readLine()); //計算返回值 return a+b; } }
可以看出這個類,承擔了兩個職責, 獲取檔案內容 和 計算兩個數的和。
靈活性很差,別人沒法用。在實際的開發中,肯定會因為大量的copy,產生重複使用的程式碼,並且容易複製出錯。
下面我們修改一下將這兩個職責分開:
獲取文字內容
//從檔案中讀取 class Reader{ int a,b; public Reader(String path)throws Exception{ BufferedReader br = new BufferedReader(new FileReader(new File(path))); a= Integer.valueOf(br.readLine); b= Integer.valueOf(br.readLine); } int getA(){ return a; } int getB(){ return b; } }
- 計算類
//計算類 class Calculator{ //加法 int add(int , int b){ return a+b; } //乘法 int multiply(int , int b){ return a*b; } //TODO 根據需要新增其他的演算法 }
這樣計算類裡面的計算方法可被任意地方呼叫,來計算兩個數的值,並且,增加計算方法,也不會影響其他方法的呼叫。
這樣類的複雜度降低、可讀性提高、可維護性提高、擴充套件性提高、降低了變更引起的風險。
需注意:單一職責原則提出了一個編寫程式的標準,用“職責”或“變化原因”來衡量介面或類設計得是否優良,但是“職責”和“變化原因”都是不可以度量的,因專案和環境而異,也就是前面我所說的,遵循的程度可以自己考量。
好了下一篇講 讓程式更穩定,更靈活的--開閉原則 。喜歡的話,關注哦,共同進步。

寫在最後:改變世界,先從改變自己開始。--- 我說的
你也可以關注我的公眾號: 碼H.cam , 隨時隨地學習設計模式