1.單例模式

What?
是一種可以讓系統(tǒng)中的同一個(gè)對(duì)象只有一個(gè)存在的模式,每次新建對(duì)象都只獲得同一個(gè)對(duì)象。
Why?
- 一般用來防止常見很耗費(fèi)內(nèi)存的對(duì)象重復(fù)建立,節(jié)省系統(tǒng)開銷。
- 因?yàn)橹挥幸环輰?duì)象,可以用來做計(jì)時(shí)器之類需要累加的數(shù)據(jù)存放。
- 隱藏對(duì)象的詳細(xì)信息,更加安全。
How?
將類的構(gòu)造方法方法定義為私有,再創(chuàng)建出static final前綴的該類對(duì)象,加上static 的getSingletong方法返回此對(duì)象。如果在多線程中使用需要線程安全的時(shí)候可在方法前加synchronize(加鎖)。
調(diào)用時(shí)直接用getSingletong方法調(diào)用。
2.工廠方法模式

What?
是一種可以通過固定方式重復(fù)獲得相同對(duì)象的方法。
Why?
可封裝對(duì)象,隱藏構(gòu)成方法,減少對(duì)象和方法之間的耦合性、
可快速創(chuàng)建出多種不同的類似類。
How?
創(chuàng)建IFactory為工廠類接口,真正的Factory類實(shí)現(xiàn)此類,完成其中的構(gòu)建產(chǎn)品類的方法和產(chǎn)品自身需要的方法。然后產(chǎn)品直接調(diào)用該工廠生成產(chǎn)品類,調(diào)用工廠中的方法來實(shí)現(xiàn)自身的方法。
3、抽象工廠模式

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

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

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

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

一種使用clone方法直接復(fù)制內(nèi)存中的類的方法,可以繞開類的構(gòu)造方法。
PS:注意淺拷貝和深拷貝的區(qū)別,淺拷貝不會(huì)拷貝非基本類型,而是直接指向該類(String可看成基本類型)
8、中介者模式

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

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

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

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

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

通常用來建立樹狀模型,可按順序記錄數(shù)據(jù)庫數(shù)據(jù)實(shí)現(xiàn)數(shù)據(jù)調(diào)用。
14.觀察者模式

一種一對(duì)多依賴關(guān)系模式,被觀察者可調(diào)用多個(gè)觀察者,然后通知他們對(duì)一個(gè)觸發(fā)執(zhí)行不同的方法。
15.命令模式

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