最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java設(shè)計模式常用原則解析

 更新時間:2020年05月26日 11:09:45   作者:懶惰的星期六  
這篇文章主要介紹了Java設(shè)計模式常用原則解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下

1.單一職責(zé)原則 每一個類負責(zé)一個職責(zé)(一個類只有一個方法)

2.里氏替換原則 所有引用基類的地方都能透明的使用其子類的對象。

  問題來了:

  比如原來

  class A{
    fun();//完成P1功能
  }

  現(xiàn)在需要添加新功能

  class B extends A{//A的子類B實現(xiàn)了fun的功能)
    fun();完成功能為P(原來的P1功能加上新增的P2功能)
  }

  則,在子類B完成新功能P2的時候可能會導(dǎo)致原有功能P1發(fā)生故障

  解決辦法

  當(dāng)使用繼承的時候,除了添加新的方法來完成新功能P2之外,盡量不要重寫父類A的方法,也盡量不要重載父類A 的方法

3.依賴倒置原則(核心思想,面向接口編程)

定義:高層模塊不應(yīng)該以來底層模塊,二者都應(yīng)該依賴其抽象;抽象不應(yīng)該依賴細節(jié),細節(jié)應(yīng)該依賴抽象;

問題:

  類A(高層模塊)直接依賴B(低層模塊)

eg:class A{
    public void fun(B b){};
  }

  現(xiàn)在想要把類A的依賴改為C,則必須修改類A的代碼為

eg:class A{
    public void fun(C c){};
  }

  解決辦法:

  類B和類C都實現(xiàn)接口Interface D;

  類A依賴接口D

 eg:class A{
    public void fun(D d){};
   }

  這樣在使用類A的fun方法時可以這樣使用fun(new B());或者fun(new C());

4.接口隔離原則

將臃腫的接口才氛圍獨立的幾個接口,這樣子類在實現(xiàn)該接口時就不必要實現(xiàn)臃腫接口的所有的抽象方法

5.迪米特法則(最少知道法則)

  降低類與類之間的耦合度,從而減少當(dāng)一個類改變時對另一個類造成的影響。

  簡單來說,就是一個類對自己以來的類知道的越少越好。對于被以來的類,無論邏輯多么復(fù)雜,盡可能的將邏輯封裝在類的內(nèi)部,對外提供一個public的方法就行了。

  更簡單的定義:至于直接的朋友(稱出現(xiàn)成員變量、方法參數(shù)、方法返回值中的類為直接朋友,出現(xiàn)在局部變量中的類不是直接的朋友)進行通信。

 ?。ㄒ蕾嚨娜N方式,方法參數(shù),局部變量-方法內(nèi)的變量,靜態(tài)變量-方法中調(diào)用某個類的靜態(tài)方法)

6.開閉原則

  一個軟件實體類、模塊、和函數(shù)應(yīng)該對擴展開放,對修改關(guān)閉。

  問題:當(dāng)軟件升級維護時,隊友俺有代碼進行修改,可能會給舊代碼引入錯誤。

  解決辦法:當(dāng)軟件需要變化時,盡可能通過擴展軟件實體的行為來實現(xiàn)變化,兒不是通過修改已有的代碼來實現(xiàn)變化。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java8 新特性Lambda表達式實例詳解

    Java8 新特性Lambda表達式實例詳解

    這篇文章主要介紹了Java8 新特性Lambda表達式實例詳解的相關(guān)資料,需要的朋友可以參考下
    2017-03-03
  • idea啟動springboot報錯: 找不到或無法加載主類問題

    idea啟動springboot報錯: 找不到或無法加載主類問題

    這篇文章主要介紹了idea啟動springboot報錯: 找不到或無法加載主類問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-12-12
  • Java中的OpenTracing使用實例

    Java中的OpenTracing使用實例

    這篇文章主要介紹了Java中的OpenTracing使用實例,主要的OpenTracing API將所有主要組件聲明為接口以及輔助類,例如Tracer,Span,SpanContext,Scope,ScopeManager,Format(用映射定義通用的SpanContext注入和提取格式),需要的朋友可以參考下
    2024-01-01
  • Spring?Security短信驗證碼實現(xiàn)詳解

    Spring?Security短信驗證碼實現(xiàn)詳解

    本文主要介紹了Spring?Security短信驗證碼的實現(xiàn)詳解,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-11-11
  • 詳解IDEA使用Maven項目不能加入本地Jar包的解決方法

    詳解IDEA使用Maven項目不能加入本地Jar包的解決方法

    這篇文章主要介紹了詳解IDEA使用Maven項目不能加入本地Jar包的解決方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-08-08
  • xml 的特殊字符的處理方法

    xml 的特殊字符的處理方法

    在xml中,有一些符號作為XML 的標(biāo)記符號,一些特定情況下,屬性值必須帶有這些特殊符號?!∠旅嬷饕侵v解一些常用的特殊符號的處理
    2016-07-07
  • Java 數(shù)據(jù)結(jié)構(gòu)中二叉樹前中后序遍歷非遞歸的具體實現(xiàn)詳解

    Java 數(shù)據(jù)結(jié)構(gòu)中二叉樹前中后序遍歷非遞歸的具體實現(xiàn)詳解

    樹是一種重要的非線性數(shù)據(jù)結(jié)構(gòu),直觀地看,它是數(shù)據(jù)元素(在樹中稱為結(jié)點)按分支關(guān)系組織起來的結(jié)構(gòu),很象自然界中的樹那樣。樹結(jié)構(gòu)在客觀世界中廣泛存在,如人類社會的族譜和各種社會組織機構(gòu)都可用樹形象表示
    2021-11-11
  • 學(xué)java得這樣學(xué),學(xué)習(xí)確實也得這樣

    學(xué)java得這樣學(xué),學(xué)習(xí)確實也得這樣

    學(xué)java得這樣學(xué),學(xué)習(xí)東西確實也得這樣
    2008-02-02
  • Java9新特性Module模塊化編程示例演繹

    Java9新特性Module模塊化編程示例演繹

    這篇文章主要為大家介紹了Java9新特性Module模塊化編程的示例演繹,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-03-03
  • 詳解springboot-mysql-pagehelper分頁插件集成

    詳解springboot-mysql-pagehelper分頁插件集成

    這篇文章主要介紹了springboot-mysql-pagehelper分頁插件集成,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-07-07

最新評論

郯城县| 南岸区| 大理市| 福安市| 三江| 灵山县| 铜鼓县| 兰坪| 托里县| 白沙| 田林县| 瑞金市| 甘泉县| 榆林市| 阿合奇县| 武胜县| 固始县| 沭阳县| 宁蒗| 长海县| 呼玛县| 芷江| 上虞市| 甘孜| 库尔勒市| 抚松县| 林西县| 信宜市| 合肥市| 德格县| 乌兰浩特市| 大庆市| 汉沽区| 桂东县| 苏尼特左旗| 香港 | 威海市| 定结县| 绥江县| 民权县| 新郑市|