【31】常見設計模式理解

1.單例模式

單例模式.jpg

What?
是一種可以讓系統(tǒng)中的同一個對象只有一個存在的模式,每次新建對象都只獲得同一個對象。

Why?

  1. 一般用來防止常見很耗費內存的對象重復建立,節(jié)省系統(tǒng)開銷。
  2. 因為只有一份對象,可以用來做計時器之類需要累加的數(shù)據(jù)存放。
  3. 隱藏對象的詳細信息,更加安全。

How?
將類的構造方法方法定義為私有,再創(chuàng)建出static final前綴的該類對象,加上static 的getSingletong方法返回此對象。如果在多線程中使用需要線程安全的時候可在方法前加synchronize(加鎖)。
調用時直接用getSingletong方法調用。

2.工廠方法模式

工廠方法模式.jpg

What?
是一種可以通過固定方式重復獲得相同對象的方法。

Why?
可封裝對象,隱藏構成方法,減少對象和方法之間的耦合性、
可快速創(chuàng)建出多種不同的類似類。

How?
創(chuàng)建IFactory為工廠類接口,真正的Factory類實現(xiàn)此類,完成其中的構建產品類的方法和產品自身需要的方法。然后產品直接調用該工廠生成產品類,調用工廠中的方法來實現(xiàn)自身的方法。

3、抽象工廠模式

抽象工廠模式.jpg

是一種比工廠方法更靈活的模式,與工廠方法不同的是他在接口上進行調用,因此可以實現(xiàn)更多的類型變化。

4、模板模式

模板模式.jpg

講多個類中相同的內容提取到抽象類后,讓這些類來繼承實現(xiàn)該抽象類的一種模式。
簡單說就是把共有的內容向上提取的一種模式。然后繼承后再實現(xiàn)各自自己的特有方法。

5. 建造者模式

建造者模式.jpg

是一種模板模式的延伸,比模板模式更復雜的模式,區(qū)別在于抽象出得接口可以供一個統(tǒng)一的操作類來操作的模式。

6.代理模式

代理模式.jpg

用一個實現(xiàn)相同接口的類來代替自己處理事情的模式。代理類通過調用被代理類的方法來完成被代理類需要的操作。

7.原型模式

原型模式.jpg

一種使用clone方法直接復制內存中的類的方法,可以繞開類的構造方法。
PS:注意淺拷貝和深拷貝的區(qū)別,淺拷貝不會拷貝非基本類型,而是直接指向該類(String可看成基本類型)

8、中介者模式

中介者模式.jpg

一般用于多個類間關系復雜的數(shù)據(jù)模型,特別是每個類兩兩之間都有關聯(lián),就可以新建一個中介者類來讓各個類只和這個中介者類打交道。可減少不同類之間的耦合。
是一種現(xiàn)實中也用的很多的模式,比如房屋中介、

9、責任鏈模式

責任鏈模式.jpg

如果一個業(yè)務需要按不同條件時有不同執(zhí)行人或方法時,且有執(zhí)行優(yōu)先級時,可以使用這種模式。
抽象出一個業(yè)務類,不同的執(zhí)行人來繼承實現(xiàn)這個業(yè)務類,然后調用時,直接調用抽象類,實行遞歸來執(zhí)行業(yè)務。
優(yōu)點:可以解除類之間的耦合,方便擴展。

10.裝飾模式

裝飾模式.jpg

是一種將多種對類修飾的方法分離出來得模式。被修飾類和修飾類接口共同實現(xiàn)一個抽象出來得接口。然后修飾類接口封裝一個被修飾類,不同的修飾類繼承實現(xiàn)此修飾類接口,就可以實現(xiàn)對唄修飾類的不同修飾。
優(yōu)點:靈活多變,解耦,方便擴展。

11.策略模式

策略模式.jpg

實現(xiàn)多種類似操作時,將相同的內容抽象成接口然后通過接口來統(tǒng)一操作的一種模式。調用者直接使用對接口封裝好操作類來實現(xiàn)調用。
比如:計算器

12.迭代器模式

迭代器模式.jpg

現(xiàn)在很少會實際去寫的模式,就是為抽象容器完成寫一個方便遍歷的類。java中的容器基本都實現(xiàn)了這個迭代器類Iterator。

13.組合模式

組合模式.jpg

通常用來建立樹狀模型,可按順序記錄數(shù)據(jù)庫數(shù)據(jù)實現(xiàn)數(shù)據(jù)調用。

14.觀察者模式

觀察者模式.jpg

一種一對多依賴關系模式,被觀察者可調用多個觀察者,然后通知他們對一個觸發(fā)執(zhí)行不同的方法。

15.命令模式

命令模式.jpg

通過一個統(tǒng)一的命令接受者封裝命令接口來實現(xiàn)不同命令的模式。具體的命令類實現(xiàn)命令接口且調用不同的命令接受者。命令發(fā)出者只用調用命令接受者,不用管下面的命令具體接受人是誰。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 設計模式匯總 一、基礎知識 1. 設計模式概述 定義:設計模式(Design Pattern)是一套被反復使用、多...
    MinoyJet閱讀 3,978評論 1 15
  • 1. Java基礎部分 基礎部分的順序:基本語法,類相關的語法,內部類的語法,繼承相關的語法,異常的語法,線程的語...
    子非魚_t_閱讀 31,765評論 18 399
  • 一、設計模式的分類 總體來說設計模式分為三大類: 創(chuàng)建型模式,共五種:工廠方法模式、抽象工廠模式、單例模式、建造者...
    RamboLI閱讀 772評論 0 1
  • 原文鏈接:http://blog.csdn.net/zhangerqing http://www.cnblogs....
    孤獨雜貨鋪閱讀 1,532評論 0 3
  • 有點兔閱讀 921評論 11 15