設計模式(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的序列生成等.但單例的使用需要謹慎,特別是在需要作負載均衡的地方,因為這種程式級的單例模式實際上只能保證在乙個應用中為單例.如果被多個應用載入,還是會...