您好,登錄后才能下訂單哦!
這篇“java設計模式的單一職責原則怎么實現”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“java設計模式的單一職責原則怎么實現”文章吧。
單一職責原則(Single Responsibility Principle),簡稱SRP。
定義:
There should never be more than one reason for a class to change.
應該有且僅有一個原因引起類的變更。
有時候,開發人員設計接口的時候會有些問題,比如用戶的屬性和用戶的行為被放在一個接口中聲明。這就造成了業務對象和業務邏輯被放在了一起,這樣就造成了這個接口有兩種職責,接口職責不明確,按照SRP的定義就違背了接口的單一職責原則了。
下面是個例子:
package com.loulijun.chapter1; public interface Itutu { //身高 void setShengao(double height); double getShengao(); //體重 void setTizhong(double weight); double getTizhong(); //吃飯 boolean chiFan(boolean hungry); //上網 boolean shangWang(boolean silly); }
上面的例子就存在這個問題,身高、體重屬于業務對象,與之相應的方法主要負責用戶的屬性。而吃飯、上網是相應的業務邏輯,主要負責用戶的行為。但是這就會給人一種不知道這個接口到底是做什么的感覺,職責不清晰,后期維護的時候也會造成各種各樣的問題。
解決辦法:單一職責原則,將這個接口分解成兩個職責不同的接口即可
ItutuBO.java:負責tutu(涂涂,假如是個人名)的屬性
package com.loulijun.chapter1; /** * BO:Bussiness Object,業務對象 * 負責用戶的屬性 * @author Administrator * */ public interface ItutuBO { //身高 void setShengao(double height); double getShengao(); //體重 void setTizhong(double weight); double getTizhong(); }
ItutuBL.java:負責涂涂的行為
package com.loulijun.chapter1; /** * BL:Business Logic,業務邏輯 * 負責用戶的行為 * @author Administrator * */ public interface ItutuBL { //吃飯 boolean chiFan(boolean hungry); //上網 boolean shangWang(boolean silly); }
這樣就實現了接口的單一職責。那么實現接口的時候,就需要有兩個不同的類
TutuBO.java
package com.loulijun.chapter1; public class TutuBO implements ItutuBO { private double height; private double weight; @Override public double getShengao() { return height; } @Override public double getTizhong() { return weight; } @Override public void setShengao(double height) { this.height = height; } @Override public void setTizhong(double weight) { this.weight = weight; } }
TutuBL.java
package com.loulijun.chapter1; public class TutuBL implements ItutuBL { @Override public boolean chiFan(boolean hungry) { if(hungry) { System.out.println("去吃火鍋..."); return true; } return false; } @Override public boolean shangWang(boolean silly) { if(silly) { System.out.println("好無聊啊,上會網..."); return true; } return false; } }
這樣就清晰了,當需要修改用戶屬性的時候只需要對ItutuBO這個接口來修改,只會影響到TutuBO這個類,不會影響其他類。
那么單一職責原則的意義何在呢?
降低類的復雜性,實現什么樣的職責都有清晰的定義
提高可讀性
提高可維護性
降低變更引起的風險,對系統擴展性和維護性很有幫助
但是、使用單一職責原則有一個問題,“職責”沒有一個明確的劃分標準,如果把職責劃分的太細的話會導致接口和實現類的數量劇增,反而提高了復雜度,降低了代碼的可維護性。所以使用這個職責的時候還要具體情況具體分析。建議就是接口一定要采用單一職責原則,實現類的設計上盡可能做到單一職責原則,***是一個原因引起一個類的變化。
以上就是關于“java設計模式的單一職責原則怎么實現”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。