設計模式 設計模式梳理

2021-09-25 05:14:21 字數 2914 閱讀 7978

工廠模式:

定義乙個工廠類,根據傳入的引數不同返回不同的例項,被建立的例項具有共同的父類或介面

適用場景:

(1)需要建立的物件較少。

(2)客戶端不關心物件的建立過程。

每乙個型別設定乙個工廠,生產不同型別

針對不同的物件提供不同的工廠。也就是說每個物件都有乙個與之對應的工廠。

定義乙個用於建立物件的介面,讓子類決定將哪乙個類例項化。工廠方法模式讓乙個類的例項化延遲到其子類。

建立一系列相互關聯互相依賴的產品族

抽象工廠模式是工廠方法的僅一步深化,在這個模式中的工廠類不單單可以建立乙個物件,而是可以建立一組物件

(1)和工廠方法一樣客戶端不需要知道它所建立的物件的類。

(2)需要一組物件共同完成某種功能時。並且可能存在多組物件完成不同功能的情況。

(3)系統結構穩定,不會頻繁的增加物件。

享元模式(flyweight):

減少建立物件的數量,以減少記憶體占用和提供效能。當系統中存在多個相同物件,只需要共享乙份物件拷貝(提高效能)

基本邏輯:抽象享元inte***ce 

**模式:

為其他物件提供**,並通過**訪問(達到控制訪問的目的)

工廠模式和**模式的區別:

遮蔽使用者真實的物件訪問:1、安全問題   2、遠端呼叫、 3、提高系統效能

動態**:**類與委託類關係在執行時確定,無**類位元組碼,反射機制動態生成

程式設計基本邏輯:介面

位元組碼-->類-->例項

靜態**與動態**的區別:位元組碼是否由jvm動態生成,動態**中使用了反射去建立物件

hibernate**模式:1、延遲載入 2、關聯表延遲載入

先使用**,在真正呼叫到getter方法時,使用sql取物件

裝飾者模式:委託機制動態新增物件的功能

舉例:

inte***ce a

b implements a

c implements a

d extends c

e extends c

a a = new e(d(b)); //組裝

outputstream --->  fileoutputstream ---> bufferedoutputstream

(自動預讀更多的位元組資料到它自己維護的被內部位元組緩衝區中,減少系統呼叫次數)

流                         通道

inputstream --->   fileinputstream --->  bufferedinputstream

writer           --->        filewriter      --->  bufferedwwriter

reader         --->        filereader    --->  bufferedreader

通道(流)

new dtaoputstream(new bufferedoutputstream(new fileoutputstream(......)))

// decorator

介面卡模式:舊的類保持原有狀態,新的介面卡類對舊類進行適配的同時,新增自己的方法

應用:enmeration -> iterator

裝飾者模式 & 介面卡模式:

裝飾者模式:同一簇

介面卡模式:不同簇

觀察者模式:事物變化了會去通知觀察者

isubject(事物) ---> iosserver(觀察者)

具體事物               具體觀察者

isubject

//通知觀察者

典型實現:

abstractbutton ---> finalactionpermed ---> actionlistener  actionperformed()

jbutton

模版方法模式:提供乙個抽象類,將部分邏輯以具體方法或構造器形式實現,然後宣告一些抽象方法來迫使子類實現剩餘邏輯。

jdk使用的設計模式:

設計模式梳理 單例模式

一概念介紹 所謂單例模式,簡單來說,就是在整個應用中保證只有乙個類的例項存在,而且自行例項化並向整個系統提供這個例項。單例物件通常作為程式中的存放配置資訊的載體,因為它能保證其他物件讀到一致的資訊。例如在某個伺服器程式中,該伺服器的配置資訊可能存放在資料庫或 檔案中,這些配置資料由某個單例物件統一讀...

設計模式梳理 建造者模式

建造者模式 builder 將乙個複雜物件的構建與它的表示分離,使得同樣的構建過程可以建立不同的表示。該程式主要通過組裝電腦的功能實現。1 定義組裝過程 builder public abstract class builder2 具體建造者 public class concretebuilder...

設計模式 設計模式的知識點梳理

學習設計模式,首先要弄明白我們什麼要學習它,其次需要呀弄明白地就是它包含了哪些知識點。設計模式學習地知識點包含5個部分,物件導向 設計原則 設計模式 編碼規範以 重構。物件導向 現在,主流的程式設計正規化或者是程式設計風格有三種,它們分別是面向過程 物件導向和函式式程式設計。物件導向這種風格又是其中...