目錄
uml類圖
-
泛化關(guān)系(繼承):指類繼承自類闰挡,接口繼承自接口的關(guān)系,用extend關(guān)鍵字
-
實現(xiàn)關(guān)系:指類繼承自接口择卦,用implement關(guān)鍵字
-
聚合關(guān)系,表示B由A組成,整體和部分不是強(qiáng)依賴關(guān)系,整體不存在瓤狐,部分也存在拓轻。比如大雁和雁群
- 組合關(guān)系斯撮,表示B由A組成,整體不存在了,部分也不存在扶叉,用實心菱形表示勿锅。B類和A類的生命周期相同。比如大雁和翅膀枣氧。
- 關(guān)聯(lián)關(guān)系:實線箭頭溢十。表示強(qiáng)關(guān)聯(lián)關(guān)系,一般是B類中存在屬性類A
- 依賴關(guān)系:虛線箭頭达吞,表示一個對象運(yùn)行期間會用到另一個對象的關(guān)系张弛。一般是B類中method的參數(shù)用到A類
uml時序圖
動態(tài)圖包括【交互圖】【活動圖】【狀態(tài)圖】
其中交互圖又包括【時序圖】【協(xié)作圖】
時序圖組成
對象Object
矩形將對象包裹起來,名稱下有下劃線酪劫。
對象創(chuàng)建時機(jī):
- 處于頂端:說明交互時對象已經(jīng)存在
- 不在頂部:說明對象在交互過程中創(chuàng)建
生命線Lifeline
虛線吞鸭,表示對象的存在,長度取決于交互時間契耿。
激活A(yù)ctivation
表示對象執(zhí)行一項操作的時期瞒大,這個時候?qū)ο蟊徽加靡酝瓿赡稠椚蝿?wù)。
- 去激活:表示對象處于【空閑狀態(tài)】搪桂。對象的去激活是在激活條的底部透敌,通常發(fā)生在一個消息離開對象生命線。
- 激活:生命線變?yōu)榫匦翁咝担@個矩形就是激活條酗电。對象激活是在激活條的頂部。
消息
時序圖和協(xié)作圖中消息的區(qū)別:時序圖強(qiáng)調(diào)消息的順序内列,協(xié)作圖強(qiáng)調(diào)交換消息的對象間的關(guān)系撵术。
消息類型:
設(shè)計模式
設(shè)計模式一般分為三種: 創(chuàng)建型模式饵筑,結(jié)構(gòu)型模式,行為型模式
創(chuàng)建型模式
包含模式
-
簡單工廠模式(Simple Factory)
重要程度:4 (5為滿分)
simple Factory Pattern 又叫靜態(tài)工廠模式(static Factory Method)
缺點(diǎn):
一旦添加新產(chǎn)品处坪,就要修改工廠邏輯根资,可能造成工廠邏輯復(fù)雜,不利于系統(tǒng)的擴(kuò)展和維護(hù)
優(yōu)點(diǎn):
傳一個參數(shù)同窘,就能獲得需要的產(chǎn)品/對象玄帕,適用于工廠類負(fù)責(zé)創(chuàng)建的對象比較少;客戶端只知道傳入工廠類的參數(shù)想邦,不關(guān)心如何創(chuàng)建
-
工廠方法模式(Factory Method)
重要程度:5
也叫虛擬構(gòu)造器(Virtual Constructor)模式或者多態(tài)工廠(Polymorphic Factory)模式
在這里裤纹,核心的共產(chǎn)類不再負(fù)責(zé)所欲產(chǎn)品的創(chuàng)建,而是將具體的工作交給子類去做案狠,核心類僅僅負(fù)責(zé)定義具體工廠類必須實現(xiàn)的接口服傍。使得工廠方法模式可在系統(tǒng)不修改工廠角色的情況下引進(jìn)新產(chǎn)品。
可以理解為在簡單工廠方法的基礎(chǔ)上骂铁,對工廠也做了抽象吹零,然后使用面向?qū)ο蟮亩鄳B(tài)性,動態(tài)生成工廠拉庵。
- 抽象工廠模式(Abstract Factory)
重要程度:5
與工廠方法模式最大的區(qū)別在于灿椅,我又被強(qiáng)化了。工廠方法針對的是一個產(chǎn)品登記結(jié)構(gòu)钞支,而抽象工廠模式則需要面對多個產(chǎn)品等級結(jié)構(gòu)茫蛹。
新增工廠和產(chǎn)片容易,但是新增產(chǎn)品等級結(jié)構(gòu)麻煩烁挟。
如很多系統(tǒng)軟件需要更改主題婴洼,界面的按鈕。文本框撼嗓。背景色等一起發(fā)生變化時柬采,可以使用抽象工廠模式進(jìn)行設(shè)計。
開閉原則:
要求系統(tǒng)對擴(kuò)展開放且警,對修改封閉粉捻。
工廠模式的退化:
- 當(dāng)抽象工廠模式中每一個具體工廠類只創(chuàng)建一個產(chǎn)品對象,也就是只存在一個產(chǎn)品等級結(jié)構(gòu)時斑芜,抽象工廠模式退化成工廠方法模式肩刃;
- 當(dāng)工廠方法模式中抽象工廠與具體工廠合并,提供一個統(tǒng)一的工廠來創(chuàng)建產(chǎn)品對象,并將創(chuàng)建對象的工廠方法設(shè)計為靜態(tài)方法時盈包,工廠方法模式退化成簡單工廠模式沸呐。
- 建造者模式(Builder)
重要程度:2
Android中經(jīng)常使用的builder模式,解決了成員屬性初始化的一系列問題续语,比如判斷啦垂谢,賦值先后順序啦厦画,在創(chuàng)建者模式里完全內(nèi)部實現(xiàn)疮茄,不用暴露給對象用戶。用戶無需關(guān)心屬性的組裝方式根暑。
- 原型模式(Prototype)
重要程度:3
JavaScript使用的這種模式力试,來實現(xiàn)類的繼承和擴(kuò)展。
其特點(diǎn)在于:復(fù)制一個已經(jīng)存在的實例來返回新的實例排嫌,而不是新建實例畸裳。被復(fù)制的實例就是我們所叫的“原型”。
原型模式多用于創(chuàng)建復(fù)雜的或者耗時的實例淳地,因為這種情況下怖糊,復(fù)制一個已經(jīng)存在的實例使程序運(yùn)行更高效;或者創(chuàng)建值相等颇象,只是命名不一樣的同類數(shù)據(jù)伍伤。
優(yōu)點(diǎn):加速并簡化對象的創(chuàng)建,比如在一個循環(huán)內(nèi)創(chuàng)建對象遣钳,使用原型模式最好扰魂。
注意:
1.原型模式復(fù)制對象不會調(diào)用類的構(gòu)造方法。它直接在內(nèi)存中復(fù)制數(shù)據(jù)蕴茴。
2.Object的clone是淺拷貝劝评,只會拷貝對象中的基礎(chǔ)數(shù)據(jù)類型,對于數(shù)組·容器對象 ·引用對象都不會拷貝倦淀。
- 單例模式(Singleton)
重要程度:4
結(jié)構(gòu)型模式
包含模式
- 適配器模式(Adapter)
重要程度:4
Android界面開發(fā)大量使用的模式蒋畜,適配器的實現(xiàn)是把客戶類的請求轉(zhuǎn)換為對適配者的相應(yīng)接口的調(diào)用。
適配器模式:將一個接口轉(zhuǎn)換成客戶希望的另一個接口撞叽,適配器模式使接口不兼容的那些類可以一起工作姻成。其別名為包裝器(Wrapper)。適配器可以作為類結(jié)構(gòu)模型能扒,也可以作為對象結(jié)構(gòu)模型佣渴。
適用環(huán)境:系統(tǒng)需要使用現(xiàn)有類,而現(xiàn)有類不符合系統(tǒng)的需要初斑。
橋接模式(Bridge)
重要程度:3組合模式(Composite)
重要程度:4裝飾模式(Decorator)
重要程度:3
將一個類的對象嵌入另一個對象中辛润,由另一個對象來決定是否調(diào)用嵌入對象的行為以便擴(kuò)展自己的行為,我們稱這個嵌入的對象為裝飾器(Decorator).裝飾模式可以在不需要創(chuàng)造更多子類的情況下,將對象的功能加以擴(kuò)展砂竖。這就是裝飾模式的模式動機(jī)真椿。
外觀模式(Facade)
重要程度:5享元模式(Flyweight)
重要程度:1代理模式(Proxy)
重要程度:4
通過引入代理對象來間接訪問一 個對象,這就是代理模式的模式動機(jī)乎澄。給某一個對象提供一個代 理突硝,并由代理對象控制對原對象的引用。代理模式的英 文叫做Proxy或Surrogate置济,它是一種對象結(jié)構(gòu)型模式
幾種常用的代理模式
圖片代理解恰;遠(yuǎn)程代理;虛擬代理
行為型模式
行為型模式(Behavioral Pattern)是對在不同的對象之間劃分責(zé)任和算法的抽象化浙于。
行為型模式不僅關(guān)注類和對象的結(jié)構(gòu)护盈,而且重點(diǎn)關(guān)注他們之間的相互作用
通過行為型模式,更清晰的劃分類和對象的職責(zé)羞酗。
行為型分為: 類行為型模式 對象行為型模式
類行為型模式: 使用繼承關(guān)系在類之間分配行為腐宋,類行為型模式通過多態(tài)方式(polymorphism)分配父類與子類的職責(zé)
對象行為型模式:使用對象的聚合關(guān)聯(lián)關(guān)系來分配行為,通過對象關(guān)聯(lián)等方式來分配兩個或多個職責(zé)檀轨。系統(tǒng)中藥盡量使用關(guān)聯(lián)關(guān)系來取代繼承關(guān)系
包含模式
職責(zé)鏈模式(Chain of Responsibility)
重要程度:3命令模式(Command)
重要程度:4
特點(diǎn)是請求調(diào)用者和接受者解耦胸竞;可在不通的時間制定請求,將請求排隊和執(zhí)行参萄;支持命令的撤銷和恢復(fù)卫枝,支持命令的組合解釋器模式(Interpreter)
重要程度:1迭代器模式(Iterator)
重要程度:5中介者模式(Mediator)
重要程度:2備忘錄模式(Memento)
重要程度:2觀察者模式(Observer)
重要程度:5
對象與對象之間的依賴關(guān)系,一個對象發(fā)生改變時自動通知其他對象拧揽,其他對象做出相應(yīng)的反應(yīng)剃盾。發(fā)生改變的對象(觀察目標(biāo)),被通知的對象(觀察者)。一個觀察目標(biāo)可對應(yīng)多個觀察者淤袜。觀察者之間沒有相互聯(lián)系
優(yōu)點(diǎn):
可實現(xiàn)表示層邏輯層的分離痒谴,并定義穩(wěn)定的消息更新機(jī)制,抽象了更新接口铡羡。
在觀察者和觀察目標(biāo)之間建立一個抽象的耦合
支持廣播通信积蔚。
凡是涉及一對一或者一對多的對象交互場景都可以使用觀察者模式。
狀態(tài)模式(State)
重要程度:3
也可以理解為我們在游戲開發(fā)中經(jīng)常使用的狀態(tài)機(jī)策略模式(Strategy)
重要程度:4
可以理解為解決一個問題有很多算法烦周,每種算法都是一種策略尽爆。
我們可以定義一些獨(dú)立的類來封裝算法,每一個算法就是一個策略類读慎。為了保證策略一致性漱贱,我們做一個抽象類做算法的定義。
這樣策略模式讓算法獨(dú)立于它的客戶變化而變化夭委,也稱作政策模式(Policy)模板方法模式(Template Method)
重要程度:3訪問者模式(Visitor)
重要程度:1