內(nèi)容
1.設(shè)計(jì)模式介紹
2.單例模式
3.模板設(shè)計(jì)模式
一.設(shè)計(jì)模式概念
1.什么是設(shè)計(jì)模式?
對(duì)經(jīng)常出現(xiàn)的軟件設(shè)計(jì)問(wèn)題的成熟解決方案
2.設(shè)計(jì)模式舉例
比如單例模式
工廠(chǎng)模式
代理模式
觀(guān)察者模式
適配器模式
建造者模式
二.單例模式
詳細(xì)請(qǐng)看:http://www.itdecent.cn/p/6171628603fb
1.簡(jiǎn)介
單例設(shè)計(jì)模式:確保某一個(gè)類(lèi)只有一個(gè)實(shí)例,而且自行實(shí)例化并向整個(gè)系統(tǒng)提供這個(gè)實(shí)例。
2.作用
對(duì)于那些比較耗內(nèi)存的類(lèi),只實(shí)例化一次可以大大提高性能,節(jié)省內(nèi)存的開(kāi)銷(xiāo)。
3.實(shí)現(xiàn)步驟
①私有化所有的構(gòu)造方法(目的:使外部不可以直接創(chuàng)建)
②給外部提供一個(gè)靜態(tài)方法,來(lái)獲取當(dāng)前類(lèi)的一個(gè)對(duì)象。(注意:這個(gè)方法必須是靜態(tài)的)
③必須定義一個(gè)靜態(tài)成員變量來(lái)保存當(dāng)前類(lèi)唯一的一個(gè)對(duì)象(注意:這個(gè)變量必須是靜態(tài)的)
④創(chuàng)建對(duì)象(有兩種方法)
餓漢式:在定義靜態(tài)成員變量時(shí),直接就創(chuàng)建當(dāng)前類(lèi)的一個(gè)對(duì)象并賦值(類(lèi)一加載,就有這個(gè)對(duì)象了)
懶漢式:默認(rèn)不創(chuàng)建,當(dāng)調(diào)用方法的時(shí)候才會(huì)創(chuàng)建。先在靜態(tài)方法里面判斷有沒(méi)有值,如果沒(méi)有值,就創(chuàng)建,然后返回。
就類(lèi)似于
if(a == null){
//創(chuàng)建一個(gè)對(duì)象
a = new A();
}
return a;
4.深入單例模式(線(xiàn)程中)

左右兩個(gè)框是線(xiàn)程
這樣可以避免兩個(gè)線(xiàn)程都創(chuàng)建了一個(gè)實(shí)例,使單例模式在多線(xiàn)程中真正得到實(shí)現(xiàn)
三.模板設(shè)計(jì)模式
http://www.itdecent.cn/p/3d0c0a302696
1.簡(jiǎn)介
從多個(gè)具有相同特征的類(lèi)中抽象出一個(gè)抽象類(lèi),以這個(gè)抽象類(lèi)作為其子類(lèi)的模板。從而避免了子類(lèi)設(shè)計(jì)的隨意性。子類(lèi)在抽象類(lèi)的基礎(chǔ)上進(jìn)行拓展、改造
2.注意點(diǎn):
①抽象類(lèi)不能被實(shí)例化。
抽象方法必須使用abstrac修飾,但是抽象方法能被聲明,不能被實(shí)現(xiàn),只能被重寫(xiě)/覆蓋。
②抽象類(lèi)中不一定會(huì)有抽象方法,但是抽象方法必須要出現(xiàn)在抽象類(lèi)中
③一個(gè)非抽象的類(lèi)繼承抽象類(lèi),必須將抽象類(lèi)中的抽象方法覆蓋/實(shí)現(xiàn)/重寫(xiě)。
做法是可以將方法復(fù)制粘貼到子類(lèi)中然后把a(bǔ)bstract去掉
④子類(lèi)繼承抽象類(lèi)就是子類(lèi)實(shí)現(xiàn)抽象類(lèi)里面的抽象方法。一般在抽象類(lèi)里面把方法的執(zhí)行順序都弄好了,順序在構(gòu)造方法里面。
3.抽象類(lèi)與普通類(lèi)的區(qū)別
①抽象類(lèi)不能實(shí)例化,但是普通類(lèi)可以。
②抽象類(lèi)里面可以有抽象方法(抽象方法只聲明,不實(shí)現(xiàn))。但是普通類(lèi)里面不可以。