建設(shè)培訓(xùn)學(xué)校網(wǎng)站抓取關(guān)鍵詞的軟件
1、單例模式
核心:保證一個(gè)類只有一個(gè)對(duì)象,并且提供一個(gè)訪問(wèn)該實(shí)例的全局訪問(wèn)點(diǎn)
五種單例模式:主要:餓漢式:線程安全,調(diào)用效率高,不能延時(shí)加載懶漢式:線程安全,調(diào)用效率低,可以延時(shí)加載其它:枚舉單例:線程安全,調(diào)用效率高,不能延時(shí)加載(可以天然防止反射和反序列化漏洞)靜態(tài)內(nèi)部類式:線程安全,調(diào)用效率低,可以延時(shí)加載雙重檢索式
如何選擇:占用資源少且不需要延時(shí)加載:枚舉>餓漢占用資源多且需要延時(shí)加載:靜態(tài)內(nèi)部>懶漢
2、工廠模式
創(chuàng)建者與調(diào)用者分離
核心:實(shí)例化對(duì)象,甩工廠方法代替new操作
簡(jiǎn)單工廠模式(常用):不完全滿足OPC原則
工廠方法模式:
抽象工廠模式:
3、建造者模式
Builder構(gòu)造 Director 裝配
4、原型模式
實(shí)現(xiàn)Cloneable中來(lái)自object中的clone方法Object obj=(Object)Super.clone();return obj;
深克隆:Sheep s=(Sheep) obj;s.birthday=(Date)this.birthday.clone();
或者通過(guò)序列化和反序列化實(shí)現(xiàn)深復(fù)制
5、適配器模式(adapter)
6、代理模式(proxy pattern)
AOP(Aspect Oriented Programming)面向切面編程,其核心就是代理模式
核心角色:抽象角色(客戶,定義代理角色和真實(shí)角色的公共對(duì)外方法)^ ^代理角色(實(shí)現(xiàn)抽象角色) -> 真實(shí)角色(實(shí)現(xiàn)抽象角色)
7、靜態(tài)代理模式(客戶-經(jīng)紀(jì)人-演員)
8、動(dòng)態(tài)代理模式
9、橋接模式
將多個(gè)維度的東西比如:電腦品牌與電腦類型分別來(lái)表示,然后通過(guò)參數(shù)形式將二者結(jié)合起來(lái)。
適用的場(chǎng)景:處理多層繼承結(jié)構(gòu)、處理多維度變化的場(chǎng)景、將各個(gè)維度設(shè)計(jì)成獨(dú)立的繼承結(jié)構(gòu),使各個(gè)維度可以獨(dú)立的擴(kuò)展在抽象層建立關(guān)系。
10、組合模式(component)
把部分與整體的關(guān)系用樹(shù)形結(jié)構(gòu)來(lái)表示,從而使客戶端可以使用統(tǒng)一的方式處理部分對(duì)象和整體對(duì)象。
11、裝飾模式(decorator)
動(dòng)態(tài)的為一個(gè)對(duì)象增加新的功能
12、外觀模式
迪米特法則(封裝):
一個(gè)軟件實(shí)體應(yīng)當(dāng)盡可能少的與其他實(shí)體發(fā)生相互作用。
13、享元模式(Fly weight)
如果有多個(gè)完全相同或者相似的對(duì)象,我們可以通過(guò)享元模式節(jié)省內(nèi)存。
享元對(duì)象能夠做到共享的關(guān)鍵是區(qū)分了內(nèi)部狀態(tài)和外部狀態(tài)。
內(nèi)部狀態(tài):可以共享,不會(huì)隨著環(huán)境變化而改變
外部狀態(tài):不可以共享,會(huì)隨著環(huán)境變化而改變
14、責(zé)任鏈模式(chain of responsibility)
將能夠處理同一類請(qǐng)求的對(duì)象連成一條鏈,請(qǐng)求沿著鏈傳遞,如果能夠處理就處理,處理不了就向后傳遞。
15、迭代器模式(iterator)
提供一種可以遍歷聚合對(duì)象的方式
聚合對(duì)象:存儲(chǔ)數(shù)據(jù)
迭代器:遍歷數(shù)據(jù)
16、中介者模式(mediator)
17、命令模式(commend)
將一個(gè)請(qǐng)求封裝成對(duì)象,從而我們可以使用不同的請(qǐng)求對(duì)客戶進(jìn)行參數(shù)化。
18、策略模式(strategy)
19、模板方法模式(Template method)
定義好模板,核心內(nèi)容用到再實(shí)現(xiàn),模板中定義為抽象方法
20、狀態(tài)模式(state)
不同狀態(tài)對(duì)應(yīng)不同行為,用于解決系統(tǒng)中復(fù)雜對(duì)象的狀態(tài)轉(zhuǎn)換以及不同狀態(tài)下行為的封裝。
21、觀察者模式(observe)
廣播,1:N的通知,當(dāng)目標(biāo)對(duì)象的狀態(tài)發(fā)生改變時(shí),他需要及時(shí)告知一系列觀察者對(duì)象,令他們做出響應(yīng)。
JAVASE提供了java.util.observable類和java.util.observer接口來(lái)實(shí)現(xiàn)觀察者模式。
22、備忘錄模式(memento)
保存某個(gè)對(duì)象內(nèi)部狀態(tài)的拷貝,以后就可以將該對(duì)象恢復(fù)到原先的狀態(tài)。
源發(fā)器類:包括備份數(shù)據(jù)與恢復(fù)數(shù)據(jù)兩種方法
備忘錄類:通過(guò)構(gòu)造器的方法來(lái)進(jìn)行數(shù)據(jù)備份
負(fù)責(zé)人類:負(fù)責(zé)管理備忘錄提供備忘錄的get/set方法