工廠模式:
定義乙個工廠類,根據傳入的引數不同返回不同的例項,被建立的例項具有共同的父類或介面
適用場景:
(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個部分,物件導向 設計原則 設計模式 編碼規範以 重構。物件導向 現在,主流的程式設計正規化或者是程式設計風格有三種,它們分別是面向過程 物件導向和函式式程式設計。物件導向這種風格又是其中...