1.設(shè)計(jì)模式的說(shuō)明:
1.1理解:
設(shè)計(jì)模式:是在大量的實(shí)踐中總結(jié)和理論化之后,優(yōu)化的代碼結(jié)構(gòu)、編程風(fēng)格、以及解決問(wèn)題的思考方式。
1.2 常用設(shè)計(jì)模式 ---- 23種經(jīng)典的設(shè)計(jì)模式 GOF
創(chuàng)建型模式,共5種:工廠方法模式、抽象工廠模式、單例模式、建造者模式、原型模式。
結(jié)構(gòu)模型,共7種:適配器模式、裝飾器模式、代理模式、外觀模式、橋接模式、組合模式、享元模式。
行為型模式,共11種:策略模式、模板方法模式、觀察者模式、迭代器模式、責(zé)任鏈模式、命令模式、備忘錄模式、狀態(tài)模式、訪問(wèn)者模式、中介者模式、解釋器模式。
2.單例模式:
2.1 要解決的問(wèn)題:
所謂類的單例設(shè)計(jì)模式,就是采用了一定的方法保證在整個(gè)的軟件系統(tǒng)中,對(duì)某個(gè)類只能存在一個(gè)對(duì)象實(shí)例。
2.2具體代碼的實(shí)現(xiàn):
餓漢式1:
class Bank{
//1.私有化類的構(gòu)造器
private Bank(){}
//2.創(chuàng)建內(nèi)部類的對(duì)象
//4.要求此對(duì)象也必須聲明為靜態(tài)的
private static Bank instance = new Bank();
//3.提供公共的靜態(tài)的方法,返回類的對(duì)象
public static Bank getInstance(){
return instance;
}
}
餓漢式2:使用了靜態(tài)代碼塊
class Order {
//1.私有化類的構(gòu)造器
private Order(){}
//2.聲明當(dāng)前類的對(duì)象,沒(méi)有初始化
//4.此對(duì)象也必須聲明為static的
private static Order instance = null;
static{
instance = new Order();
}
//3.聲明public static的返回當(dāng)前類對(duì)象的方法
public static Order getInstance(){
return instance;
}
}
懶漢式:
class Order{
//1.私有化類的構(gòu)造器
private Order(){}
//2.聲明當(dāng)前類對(duì)象,沒(méi)有初始化
//4.此對(duì)象也必須聲明為static的
public static Order instance = null;
//3.聲明public、static的返回當(dāng)前類對(duì)象的方法
public static Order getInstance(){
if(instance == null){
instance = new Order();
}
return instance;
}
}
2.3兩種方法的對(duì)比:
餓漢式:
壞處:對(duì)象加載時(shí)間過(guò)長(zhǎng)
好處:餓漢式是線程安全的
懶漢式:
好處:延遲對(duì)象的創(chuàng)建。
目前的壞處:線程不安全。----> 到多線程內(nèi)容時(shí),在修改。
本文摘自 :https://www.cnblogs.com/