真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網站制作重慶分公司

java設計模式的單一職責原則怎么實現

這篇“java設計模式的單一職責原則怎么實現”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“java設計模式的單一職責原則怎么實現”文章吧。

創(chuàng)新互聯(lián)公司是一家專注于成都網站制作、成都網站設計與策劃設計,雁塔網站建設哪家好?創(chuàng)新互聯(lián)公司做網站,專注于網站建設10多年,網設計領域的專業(yè)建站公司;建站業(yè)務涵蓋:雁塔等地區(qū)。雁塔做網站價格咨詢:18980820575

單一職責原則(Single Responsibility Principle),簡稱SRP。

定義:

There should never be more than one reason for a class to change.

應該有且僅有一個原因引起類的變更。

有時候,開發(fā)人員設計接口的時候會有些問題,比如用戶的屬性和用戶的行為被放在一個接口中聲明。這就造成了業(yè)務對象和業(yè)務邏輯被放在了一起,這樣就造成了這個接口有兩種職責,接口職責不明確,按照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);  }

上面的例子就存在這個問題,身高、體重屬于業(yè)務對象,與之相應的方法主要負責用戶的屬性。而吃飯、上網是相應的業(yè)務邏輯,主要負責用戶的行為。但是這就會給人一種不知道這個接口到底是做什么的感覺,職責不清晰,后期維護的時候也會造成各種各樣的問題。

解決辦法:單一職責原則,將這個接口分解成兩個職責不同的接口即可

ItutuBO.java:負責tutu(涂涂,假如是個人名)的屬性

package com.loulijun.chapter1;     /**   * BO:Bussiness Object,業(yè)務對象   * 負責用戶的屬性   * @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,業(yè)務邏輯   * 負責用戶的行為   * @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這個類,不會影響其他類。

那么單一職責原則的意義何在呢?

  1. 降低類的復雜性,實現什么樣的職責都有清晰的定義

  2. 提高可讀性

  3. 提高可維護性

  4. 降低變更引起的風險,對系統(tǒng)擴展性和維護性很有幫助

但是、使用單一職責原則有一個問題,“職責”沒有一個明確的劃分標準,如果把職責劃分的太細的話會導致接口和實現類的數量劇增,反而提高了復雜度,降低了代碼的可維護性。所以使用這個職責的時候還要具體情況具體分析。建議就是接口一定要采用單一職責原則,實現類的設計上盡可能做到單一職責原則,***是一個原因引起一個類的變化。

以上就是關于“java設計模式的單一職責原則怎么實現”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。


新聞標題:java設計模式的單一職責原則怎么實現
網站URL:http://weahome.cn/article/gdsigs.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部