就乙個類而言,應該僅有乙個引起他變化的原因。
職責太多,將來維護和復用都會成很大問題
軟體實體(類,模組,函式)不能修改,但是可以擴充套件的思想。
即對於擴充套件是開放的,對於修改是封閉的
將來如果需求變動,盡可能的增加類就行,不用更改以前的**。
即要針對介面程式設計,不要對實現程式設計。
比如電腦配件cpu,記憶體不應該依賴於主機板,主機板一壞,都不能用。
注意乙個原則:
黎克特制代換原則:子型別必須能夠替換他們的父型別
正是由於黎克特制代換原則,不用更改父類,只需要擴充套件子類就行,使得開放封閉原則得以實現
依賴倒轉原則可以說是物件導向設計的標誌。
是簡單工廠模式的抽象,將業務邏輯抽到客戶端,增加乙個邏輯類,變成新增工廠類生成這個邏輯類
用原型例項指定建立物件的種類,並且通過拷貝這些原型建立新的物件。
複製過程中涉及到淺轉殖和深轉殖,淺只複製結果和基本資料型別,對於原型的物件還是在引用,而深轉殖會複製物件。
當原型的物件非常複雜多重巢狀時,考慮用序列化。將類先寫入流,在從流拿出來。
將不變的抽象行為邏輯搬到超類中,去除子類重複的**,具體的行為實現由子類完成。
如果兩個類不必彼此直接通訊,那麼這兩個類就不應當發生直接的相互作用。如果其中乙個類需要呼叫另乙個類的某乙個方法的話,可以通過第三者**這個呼叫。
迪公尺特原則首先強調的前提是在類的結構設計上,每乙個類都應當盡量降低成員的訪問許可權,松耦合。
為子系統中的一組介面提供乙個一致的介面,此模式定義了乙個高層介面,這個介面使得這一子系統更加容易使用。
外觀模式完美的體現了依賴倒轉原則和迪公尺特法則的思想。
使用階段:
一:系統設計初期,應該有意識的將不同的兩個層分離。比如經典的三層模式
二:在開發階段,子系統往往因為不斷重構演化變得很複雜。這時增加外觀類來提供簡單的介面,可以減少它們之間的依賴。
三:乙個遺留的大型的系統,難以維護和擴充套件時,可以設計乙個外觀類,讓新系統與外觀類互動,外觀類再與遺留**互動所有複雜工作。
Java基礎知識 多執行緒 設計模式 GUI
單例寫法兩種 2.怎麼通訊 2.通訊 我們也可以給執行緒設定分組 b 案例演示 myrunnable mr new myrunnable thread t1 new thread mr,張三 thread t2 new thread mr,李四 獲取執行緒組 執行緒類裡面的方法 public fin...
java 基礎知識
1.複製。賦值操作。就是先將其本身加乙個變數再賦值給其本身。如a b就是a a b 2.比較兩個值或者說是位址是否相同 指向同乙個物件 和 或 3.操作符是if else操作的縮寫,如果 右邊判斷為true則返回 左邊的計算結果。右邊錯誤,返回 右邊的計算結果。在class09裡面有例子。4.流程控...
Java基礎知識
1 物件導向的特徵有哪些方面 1.抽象 抽象就是忽略乙個主題中與當前目標無關的那些方面,以便更充分地注意與當前目標有關的方面。抽象並不打算了解全部問題,而只是選擇其中的一部分,暫時不用部分細節。抽象包括兩個方面,一是過程抽象,二是資料抽象。2.繼承 繼承是一種聯結類的層次模型,並且允許和鼓勵類的重用...