設計模式 單例模式

2021-08-21 06:58:49 字數 2535 閱讀 1499

設計模式(design pattern)是一套被反覆使用、多數人知曉的、是**設計經驗的總結。使用設計模式是為了可重用**、讓**更容易被他人理解、保證**可靠性。

設計模式的目標之一就是提高程式的可復用性。考慮的是怎樣才能將程式作為「元件」復用。

開閉原則(open close principle):對擴充套件開放,對修改關閉

黎克特制替換原則(liskov substitution principle):子類可以擴充套件父類的功能,但不能改變父類原有的功能

依賴倒轉原則(dependence inversion principle):高層模組不應該依賴低層模組,二者都應該依賴其抽象;抽象不應該依賴細節;細節應該依賴抽象,核心思想是面向介面程式設計

介面隔離原則(inte***ce segregation principle):客戶端不應該依賴它不需要的介面;乙個類對另乙個類的依賴應該建立在最小的介面上。

迪公尺特法則(最少知道原則)(demeter principle):乙個物件應該對其他物件保持最少的了解

單一職責原則( single responsibility principle ):不要存在多於乙個導致類變更的原因。通俗的說,即乙個類只負責一項職責。

建立型設計模式:

對類的例項化過程進行了抽象,能夠將軟體模組中物件的建立和物件的使用分離。

工廠方法模式(factory method)

抽象工廠模式(abstract factory)

建立者模式(builder)

原型模式(prototype)

單例模式(singleton)

結構型模式:

描述如何將類或者對 象結合在一起形成更大的結構,就像搭積木,可以通過 簡單積木的組合形成複雜的、功能更為強大的結構。

外觀模式/門面模式(facade門面模式)

介面卡模式(adapter)

**模式(proxy)

裝飾模式(decorator)

橋梁模式/橋接模式(bridge)

組合模式(composite)

享元模式(flyweight)

行為型設計模式:

是對在不同的物件之間劃分責任和演算法的抽象化。

行為型模式不僅僅關注類和物件的結構,而且重點關注它們之間的相互作用

模板方法模式(template method)

觀察者模式(observer)

狀態模式(state)

策略模式(strategy)

職責鏈模式(chain of responsibility)

命令模式(command)

訪問者模式(visitor)

調停者模式(mediator)

備忘錄模式(memento)

迭代器模式(iterator)

直譯器模式(interpreter)

單例模式:是一種常用的軟體設計模式,在它的核心結構中值包含乙個被稱為單例的特殊類。乙個類只有乙個例項,即乙個類只有乙個物件例項。將預設的建構函式宣告為私有的。

單例模式可以分為懶漢式和餓漢式:

懶漢式單例模式:在類載入時不初始化。在instance中new instance然後返回。

餓漢式單例模式:在類載入時就完成了初始化,所以類載入比較慢,但獲取物件的速度快。在靜態區初始化instance,然後通過instance返回。

懶漢式單執行緒不安全:在類載入時不初始化

class singleton

return _instance;

}private:

singleton()

餓漢模式 單執行緒安全:在類載入時已經初始化

singleton* singleton::instance ()

singleton::singleton()

singleton* singleton::_instance

=new singleton();

懶漢模式 多執行緒中加鎖:

singleton::singleton()

singleton* singleton::_instance

=null;

singleton* singleton::instance ()

unlock();

return instance;

}

懶漢模式 雙重鎖定:為解決加鎖每次判斷是否為空都需要被鎖定,很多執行緒,就會造成大量執行緒的阻塞。

singleton::singleton()

singleton* singleton::_instance

=null;

singleton* singleton::instance ()

unlock();

}return instance;

}

優點:

1.減少了時間和空間的開銷

2.提高了封裝性,使得外部不易改動例項

缺點 1.懶漢式是以時間換空間的方式。

2.餓漢式是以空間換時間的方式。

設計模式 單例模式

單例模式 singleton pattern 是乙個比較簡單的模式,其定義如下 ensure a class has only one instance,and provide a golbal point of acess to it.確保某乙個類只有乙個例項,而且自行例項化並且向整個系統提供這個...

設計模式 單例模式

class testsingleton static public function instance return self testsingleton private function clone public function setsinvar sinvar public function ...

設計模式 單例模式

單例模式的目的是保證類在系統中只被例項化一次,由該唯一的例項來為系統提供服務.單例模式主要用於保證服務的統一,比如獲取統一的編號服務,模仿oracle的序列生成等.但單例的使用需要謹慎,特別是在需要作負載均衡的地方,因為這種程式級的單例模式實際上只能保證在乙個應用中為單例.如果被多個應用載入,還是會...