設計模式(1):JAVA(1):軟體設計原則(1)單一職責:每個類或每個方法每個框架只做一件事
阿新 • • 發佈:2021-09-04
單一職責:每個類或每個方法每個框架只做一件事
反例:統計文字檔案中有多少個單詞
public static void main(String[] args) { try { //=========================負責載入路徑下的檔案 Reader in = new FileReader("F:\\1.txt"); BufferedReader br = new BufferedReader(in); String line = null; StringBuilder sb= new StringBuilder(""); while ((line =br.readLine())!=null){ sb.append(line); sb.append(""); } //==========================負責根據正則分割字串 String [] words = sb.toString().split("[^a-zA-Z]+"); System.out.println(words.length); br.close(); }catch (IOException e) { e.printStackTrace(); }
上面的寫法就違反了單一職責,同一個main方法中,我們即讓它去載入檔案,也讓它去做分割,這樣做的壞處是,每當我們需要呼叫其中的一個功能時(如我有檔案只需要分割),仍需要重寫一遍。
正例:
//==============只負責根據路徑載入檔案 public String loadFile(String path) throws IOException { Reader in = new FileReader(path); BufferedReader br= new BufferedReader(in); String line = null; StringBuilder sb = new StringBuilder(""); while ((line = br.readLine()) != null) { sb.append(line); sb.append(""); } br.close(); return sb.toString(); } //=========只負責字串根據正則分割 public int Textlength(String sb, String regex){ String [] words = sb.split(regex); return words.length; } public static void main(String[] args) throws IOException { String str = loadFile("F:\\1.txt"); String regex ="[^a-zA-Z]+"; System.out.println(Textlength(str,regex)); }
通過單一職責,可以提高程式碼的重用性,通過單一職責的方法得到的資料我們不再有耦合,拿來可以做的事也不再侷限。
本文來自部落格園,作者:秋華,轉載請註明原文連結:https://www.cnblogs.com/qiu-hua/p/15227057.html