1. 程式人生 > >Java設計模式六大原則或者說七大原則 整理 (其實文章裡有七個。。。。)

Java設計模式六大原則或者說七大原則 整理 (其實文章裡有七個。。。。)

1.開閉原則(Open Close Principle)
定義:一個軟體實體如類、模組和函式應該對擴充套件開放,對修改關閉。
    開放-封閉原則的意思就是說,你設計的時候,時刻要考慮,儘量讓這個類是足夠好,寫好了就不要去修改了,如果新需求來,我們增加一些類就完事了,原來的程式碼能不動則不動。這個原則有兩個特性,一個是說“對於擴充套件是開放的”,另一個是說“對於更改是封閉的”。面對需求,對程式的改動是通過增加新程式碼進行的,而不是更改現有的程式碼。這就是“開放-封閉原則”的精神所在
    比如,剛開始需求只是寫加法程式,很快在client類中完成後,此時變化沒有發生,需求讓再新增一個減法功能,此時會發現增加功能需要修改原來這個類,這就違背了開放-封閉原則,於是你就應該考慮重構程式,增加一個抽象的運算類,通過一些面向物件的手段,如繼承、動態等來隔離具體加法、減法與client耦合,需求依然可以滿足,還能應對變化。此時需求要新增乘除法功能,就不需要再去更改client及加減法類,而是增加乘法和除法子類即可。
絕對的修改關閉是不可能的,無論模組是多麼的‘封閉‘,都會存在一些無法對之封閉的變化,既然不可能完全封閉,設計人員必須對於他設計的模組應該對哪種變化封閉做出選擇。他必須先猜測出最有可能發生的變化種類,然後構造抽象來隔離那些變化。在我們最初編寫程式碼時,假設變化不會發生,當變化發生時,我們就建立抽象來隔離以後發生同類的變化。
     我們希望的是在開發工作展開不久就知道可能發生的變化,查明可能發生的變化所等待的時候越長,要建立正確的抽象就越困難。開放-封閉原則是面向物件設計的核心所在,遵循這個原則可以帶來面向物件技術所聲稱的巨大好處,也就是可維護、可擴充套件、可複用、靈活性好。開發人員應該僅對程式中呈現出現頻繁變化的那些部分做出抽象,然而對於應用程式中的每個部分都刻意地進行抽象同樣不是一個好主意,拒絕不成熟的抽象和抽象本身一樣重要。開放-封閉原則,可以保證以前程式碼的正確性,因為沒有修改以前程式碼,所以可以保證開發人員專注於將設計放在新擴充套件的程式碼上。
簡單的用一句經典的話來說:過去的事已成歷史,是不可修改的,因為時光不可倒流,但現在或明天計劃做什麼,是可以自己決定(即擴充套件)的。

相關推薦

Java設計模式六大原則或者七大原則 整理 (其實文章)

1.開閉原則(Open Close Principle)定義:一個軟體實體如類、模組和函式應該對擴充套件開放,對修改關閉。    開放-封閉原則的意思就是說,你設計的時候,時刻要考慮,儘量讓這個類是足夠好,寫好了就不要去修改了,如果新需求來,我們增加一些類就完事了,原來的程式碼能不動則不動。這個原則有兩個特性

Java設計模式六大原則或者七大原則 整理 (其實文章)

1.開閉原則(Open Close Principle) 定義:一個軟體實體如類、模組和函式應該對擴充套件開放,對修改關閉。     開放-封閉原則的意思就是說,你設計的時候,時刻要考慮,儘量讓這個類是足夠好,寫好了就不要去修改了,如果新需求來,我們增加一些類就完事了,原來的程式碼能不動則不動。這個原則有兩個

Java設計模式六大原則或者七大原則

設計 sub 隔離 single lose 開閉原則 bili div 依賴倒轉原則 1.開閉原則(Open Close Principle) 2.裏氏代換原則(Liskov Substitution Principle) 3.依賴倒轉原則(Dependence Inver

java設計模式六大原則

設計者 做的 設計模式 員工 打印 temp 有一種 基於 imp 目錄: 設計模式六大原則(1):單一職責原則 設計模式六大原則(2):裏氏替換原則 設計模式六大原則(3):依賴倒置原則 設計模式六大原則(4):接口隔離原則 設計模式六大原則(5):迪米特法則 設計模式六

Java設計模式六大原則-1

Java設計模式六大原則-1   做Java程式開發的每天都在使用JDK,Spring,SpringMvc,Mybatis,Netty,MINA等框架,但很少有人懂得背後的原理。即使開啟跟下原碼也是一頭霧水,很虐心,最後還是回到使用上,為什麼?難道他們不想了解嗎?當然不是,是因為真心看不懂,當時

Java設計模式六大原則-2

Java設計模式六大原則-2   做Java程式開發的每天都在使用JDK,Spring,SpringMvc,Mybatis,Netty,MINA等框架,但很少有人懂得背後的原理。即使開啟跟下原碼也是一頭霧水,很虐心,最後還是回到使用上,為什麼?難道他們不想了解嗎?當然不是,是因為真心看不懂,當時

Java設計模式-六大原則

面向物件的設計,我們通常會涉及到兩個元素:介面,類,及他們之間的協作關係。 對於介面的設計:需要考慮介面隔離原則 對於類的設計:需要考慮類本身的設計,需要考慮類的職責是否單一;對於有繼承關係的類設計,要注意子類是否改變父類的方法,目標是不要改變,子類應該只擴充套件父類的行

Java設計模式——六大原則之里氏替換

肯定有不少人跟我剛看到這項原則的時候一樣,對這個原則的名字充滿疑惑。其實原因就是這項原則最早是在1988年,由麻省理工學院的一位姓裡的女士(Barbara Liskov)提出來的。 定義1:如果對每一個型別為 T1的物件 o1,都有型別為 T2 的物件o2,使得以 T1定義

Java設計模式——六大原則

推薦大家一本書:Android原始碼設計模式解析與實踐,本書從原始碼和實踐中帶你瞭解32種設計模式和設計模式的6大原則,我以讀完受益匪淺。 設計模式六大原則1:里氏置換原則 里氏置換原則(Liskov Substitution Principle),簡稱LSP。所有引用基

Java設計模式——合成/聚合複用原則

一、什麼是合成/聚合複用原則? 合成/聚合複用原則是在一個新的物件裡面使用一些已有的物件,使之成為新物件的一部分;新的物件通過向這些物件的委派達到複用已有功能的目的。 簡述為:要儘量使用合成/聚合,儘量不要使用繼承。 二、合成和聚合的區別;依賴和關聯 合成(Compositi

五、Java設計模式之迪米特原則

定義:一個物件應該對其他物件保持最小的瞭解,又叫最小知道原則 儘量降低類與類之間的耦合 優點:降低類之間的耦合 

【學習筆記】慕課網—Java設計模式精講 第3章 軟體設計七大原則-3-1 本章導航

/** * 軟體設計七大原則-本章導航 學習筆記 * @author cnRicky * @date 2018.11.7 */ 本章導航 開閉原則(所有原則的一個基礎) 依賴倒置原則 單一職責原則 介面隔離原則 迪米特法則(最少知道原則) 里氏替換原則 合成/複用原則(組合

【學習筆記】慕課網—Java設計模式精講 第3章 軟體設計七大原則-3-2 開閉原則

/** * 軟體設計七大原則-開閉原則 * @author cnRicky * @date 2018.11.7 */ 開閉原則 定義:一個軟體實體如類、模組和函式應該對擴充套件開放,對修改關閉 強調的是用抽象構建框架,用實現擴充套件細節 優點:提高軟體系統的可複用性及可維護性 開閉原則

【學習筆記】慕課網—Java設計模式精講 第3章 軟體設計七大原則-3-6 迪米特原則(最少知道原則

/** * 軟體設計七大原則-迪米特原則 學習筆記 * @author cnRicky * @date 2018.11.10 */ 迪米特原則(最少知道原則) 一個物件應該對其他物件保持最少的瞭解。又叫最少知道原則 迪米特原則主要強調:儘量降低類與類之間的耦合 優點:降低類與類之

【學習筆記】慕課網—Java設計模式精講 第3章 軟體設計七大原則-3-5 介面隔離原則

/** * 軟體設計七大原則-介面隔離原則 學習筆記 * @author cnRicky * @date 2018.11.10 */ 介面隔離原則 定義:用多個專門的介面,而不使用單一的總介面,客戶端不應該依賴它不需要的介面 一個類對一個類的依賴應該建立在最小的介面上 建立單一介

【學習筆記】慕課網—Java設計模式精講 第3章 軟體設計七大原則-3-4 單一職責原則

/** * 軟體設計七大原則-單一職責原則 學習筆記 * @author cnRicky * @date 2018.11.10 */ 單一職責原則 定義:不要存在多於一個導致類變更的原因 一個類只負責一個職責,如果分別有兩個職責,那就建立兩個類分別負責職責1和職責2 一個類/介面/方法只負

【學習筆記】慕課網—Java設計模式精講 第3章 軟體設計七大原則-3-3 依賴倒置原則

/** * 軟體設計七大原則-依賴倒置原則 學習筆記 * @author cnRicky * @date 2018.11.10 */ 依賴倒置原則 高層模組不應該依賴低層模組,二者都應該依賴其抽象 抽象不應該依賴細節;細節應該依賴抽象 針對介面程式設計,不要針對實現程式設計(儘

java設計模式精講 Debug 方式+記憶體分析 第3章 軟體設計七大原則

軟體設計七大原則 3-1 本章導航 3-2 開閉原則講解 3-3 開閉原則coding 3-4 依賴倒置原則講解+coding 3-5 單一職責原則講解 3-6 單一職責原則coding 3-7 介面隔離原則講解+coding

Java設計模式六大原則(一句話講清楚版)

java設計 修改 變更 開閉原則 直接 接口隔離 裏氏替換原則 ava 低耦合 1. 單一原則 一個類只負責一個職責,一個方法應該只做一件事。否則當需求發生變更需要修改時,可能會引發意想不到的故障。 2. 裏氏替換原則 子類只在父類的基礎上擴展,而不去改寫父類的方法。 3

Java設計模式——(一):六大設計原則

單一職責原則 里氏替換原則 依賴倒置原則 介面隔離原則 迪米特法則 開閉原則 注:準備系統學習一下Java的23種開發模式,由於Java的開發模式是根據六大設計原則設計的,所以有必要認真學一下Java的六大設計原則(圖片來源於網路,侵刪)