<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ## 一、定義 單一職責原則(Single Responsibility Principle, SRP):一個軟件實體(模塊、類、方法)**只負責一個** 功能領域中的相應職責,或者可以定義為:就一個類而言,應該**只有一個引起它變化**的原因。 單一職責原則是實現**高內聚、低耦合**的指導方針,它是**最簡單但又最難運用**的原則 ## 二、優點 1.降低模塊、類或方法的復雜度。 2.提高類可讀性,系統的可維護性。 3.降低變更引起的風險。 ## 三、示例 ~~~ /** * 小明同學的周末 */ public class XiaoMing { public void activity(String activity){ if("學習".equals(activity)){ System.out.println("小明周末在家學習!"); }else{ System.out.println("小明周末出去運動了!"); } } } ~~~ ~~~ public class Test { public static void main(String[] args) { XiaoMing xm = new XiaoMing(); xm.activity("學習"); System.out.println("------"); xm.activity("運動"); } } ~~~ ~~~ 小明周末在家學習! ------ 小明周末出去運動了! ~~~ 在這個示例中,一個方法包含了兩個職責運動和學習,很明顯兩種職責的業務邏輯是不一樣的,必須要修改代碼。 而修改代碼邏輯勢必會相互影響容易造成不可控的風險。我們對職責進行分離解耦,來看代碼: ~~~ //學習 public void study(String study){ System.out.println("小明周末在家" + study + "!"); } //運動 public void motion(String motion){ System.out.println("小明周末出去" + motion + "!"); } ~~~ ~~~ public class Test { public static void main(String\[\] args) { XiaoMing xm = new XiaoMing(); xm.study("學習"); System.out.println("--------------"); xm.motion("運動"); } } ~~~ ~~~ 小明周末在家學習! -------------- 小明周末出去運動! ~~~ 修改后的代碼由原先的activity()方法解耦成兩個職責單一的方法,每個方法只有一種可能讓它產生變化, 這是方法層面的單一原則,我們在看看類方面。 ~~~ public class Study { //java學習 public void javaStudy(String name){ System.out.println("在家學習" \+ name); } //php學習 public void phpStudy(String name){ System.out.println("在家學習" \+ name); } //練習吉他 public void guitarStudy(String name){ System.out.println("在家練習" \+ name); } //練習唱歌 public void singStudy(String name){ System.out.println("在家練習" \+ name); } } ~~~ 在上面的示例中我們看到Study類中包含了四個方法,雖然這四個方法都是學習相關的,但是細分的話我們能發現它們的職責還是不那么單一。學習JAVA和PHP,從性質上說它們兩個是知識方面的,而練習吉他和唱歌,更偏向于技能和興趣愛好方面。所以我們需要把它解耦成兩個職責單一的類。 ~~~ /** * Create By Ke Shuiqiang 2020/3/6 15:42 * 知識學習 */ public class KnowledgeSudy { //java學習 public void javaStudy(String name){ System.out.println("在家學習" + name); } //php學習 public void phpStudy(String name){ System.out.println("在家學習" + name); } } /** * Create By Ke Shuiqiang 2020/3/6 15:44 * 興趣愛好學習 */ public class InterestStudy { //練習吉他 public void guitarStudy(String name){ System.out.println("在家練習" + name); } ~~~
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看