java設計模式的整理

一.6大設計原則(Solid)

類是對一類“事物”的屬性與行爲的抽象。

1.單一原則(Single):一個類應該職責單一,一個類只代表一種概念,一個方法只實現一個功能。

2.開閉原則:類對擴展是開放的,對修改是關閉的。

3.里氏替換原則:派生類必須能夠完全替換基類。

4.依賴倒置原則:高層模塊不依賴底層模塊,雙發都應該依賴抽象,抽象不依賴細節,細節依賴抽象;

5.接口隔離原則:類之間的依賴關係應該建立在最小的接口上;

6.迪米特原則:一個對象應該對其他的對象有最少的瞭解,即通俗講外部關心的方法爲publish,其他次要的都是private。

 

一張圖學會UML:

1. 繼承/泛化(Generalization)

【泛化關係】:是一種繼承關係,表示一般與特殊的關係,它指定了子類如何特化父類的所有特徵和行爲。例如:老虎是動物的一種,即有老虎的特性也有動物的共性。繼承是類與類或者接口與接口之間最常見的關係;在Java中此類關係通過關鍵字extends明確標識,在設計時一般沒有爭議性。

【箭頭指向】:帶三角箭頭的實線,箭頭指向父類

UML中的類之間關係實例圖

 

二.

三.

四.工廠模式:生成複雜對象,最終目的是解耦

適用場景:
不管是簡單工廠模式,工廠方法模式還是抽象工廠模式,他們具有類似的特性,適用場景也是類似的。
首先,作爲一種創建類模式,在任何需要生成複雜對象的地方,都可以使用工廠方法模式。有一點需要注意的地
方就是複雜對象適合使用工廠模式,而簡單對象,特別是只需要通過new就可以完成創建的對象,無需使用工廠
模式。如果使用工廠模式,就需要引入一個工廠類,會增加系統的複雜度。
其次,工廠模式是一種典型的解耦模式,迪米特法則在工廠模式中表現的尤爲明顯。假如調用者自己組裝產品需
要增加依賴關係時,可以考慮使用工廠模式。將會大大降低對象之間的耦合度。
再次,由於工廠模式是依靠抽象架構的,它把實例化產品的任務交由實現類完成,擴展性比較好。也就是說,當
需要系統有比較好的擴展性時,可以考慮工廠模式,不同的產品用不同的實現工廠來組裝。

 

簡單工廠模式:可以根據參數的不同返回不同類的實例;

方法工廠模式:定義一個用於創建對象的接口,讓子類決定實例化哪一個類,工廠方法使一個類的實例化延遲到其子類。

工廠方法模式有四個要素:
• 工廠接口。工廠接口是工廠方法模式的核心,與調用者直接交互用來提供產品。在實際編程中,有時候也會
使用一個抽象類來作爲與調用者交互的接口,其本質上是一樣的。
• 工廠實現。在編程中,工廠實現決定如何實例化產品,是實現擴展的途徑,需要有多少種產品,就需要有多
少個具體的工廠實現。
• 產品接口。產品接口的主要目的是定義產品的規範,所有的產品實現都必須遵循產品接口定義的規範。產品
接口是調用者最爲關心的,產品接口定義的優劣直接決定了調用者代碼的穩定性。同樣,產品接口也可以用
抽象類來代替,但要注意最好不要違反里氏替換原則。
• 產品實現。實現產品接口的具體類,決定了產品在客戶端中的具體行爲。

 

抽象工廠模式:爲創建一組相關或相互依賴的對象提供一個接口,而且無需指定他們的具體類。

場景: 當需要創建的對象是一系列相互關聯或相互依賴的產品族時,便可以使用抽象工廠模式。

抽象工廠模式的優點

除了具有工廠方法模式的優點外,最主要的優點就是可以在類的內部對產品族進行約束。所謂的產品族,一般或多或少的都存在一定的關聯,抽象工廠模式就可以在類內部對產品族的關聯關係進行定義和描述,而不必專門引入一個新的類來進行管理。

抽象工廠模式的缺點

 產品族的擴展將是一件十分費力的事情,假如產品族中需要增加一個新的產品,則幾乎所有的工廠類都需要進行修改。

 

簡單工廠模式與工廠方法模式的區別:

簡單工廠只有三個要素,沒有工廠接口,並且得到產品的方法一般是靜態的。因爲沒有工廠接口,所以在工廠實現的擴展性方面稍弱。

抽象工廠模式與工廠方法模式的區別:
工廠方法模式針對的是一個產品等級結構;而抽象工廠模式則是針對的多個產品等級結構。

應用場景:

 

原型模式

用一個已經創建的實例作爲原型,通過複製該原型對象來創建一個和原型相同或相似的新對象。在這裏,原型實例指定了要創建的對象的種類。用這種方式創建對象非常高效,根本無須知道對象創建的細節。

原型模式的應用場景

原型模式通常適用於以下場景。

  • 對象之間相同或相似,即只是個別的幾個屬性不同的時候。
  • 對象的創建過程比較麻煩,但複製比較簡單的時候。

場景:cho

 

參考:

https://www.cnblogs.com/scevecn/p/5663369.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章