持續更新中...
觀察者模式:
(https://blog.csdn.net/colinandroid/article/details/81113013)
觀察者模式:定義對象間一種一對多的依賴關系,使得每當一個對象改變狀態,則所有依賴它的對象都會得到通知並自動更新。
Subject:就是“被觀察”的角色,它將所有觀察者對象的引用保存在一個集合中。
(1)保存注冊的觀察者對象
(2)注冊觀察者對象
(3)注銷觀察者對象
(4)通知所有注冊的觀察者對象
Observer:是抽象的“觀察”角色,它定義了一個更新接口,使得在被觀察者狀態發生改變時通知自己。
ConcreteObserver:具體的觀察者。
單例模式:
(https://blog.csdn.net/q_all_is_well/article/details/82377917)
實現特點:
(1)私有化該類的構造函數
(2)通過new在本類中創建一個本類對象
(3)定義一個公有的方法,將在該類中所創建的對象返回
實現方法:
(1)單例模式的餓漢式:餓了肯定要飢不擇食。所以在單例類定義的時候就進行實例化
(2)單例模式懶漢式雙重校驗鎖:在第一次用到類實例的時候才會去實例化
#include<mutex> using namespace std; class Singleton { private: static Singleton* m_instance; Singleton() {} //拷貝和賦值 Singleton(const Singleton&) {}; Singleton& operator=(const Singleton&) {}; //它的唯一工作就是在析構函數中刪除Singleton的實例 class CGarbo { public: ~CGarbo() { if (Singleton::m_instance) delete Singleton::m_instance; } }; //定義一個靜態成員,程序結束時,系統會自動調用它的析構函數 static CGarbo Garbo; public: static Singleton* getInstance(); }; Singleton* Singleton::getInstance() { if (NULL == m_instance) { std::mutex g_mutex; g_mutex.lock();//借用其它類來實現,如boost if (NULL == m_instance) { m_instance = new Singleton; } g_mutex.unlock(); } return m_instance; }
(3)內部類
工廠模式:
(https://blog.csdn.net/u012156116/article/details/80857255)
工廠方法模式定義一個用於創建對象的接口,讓子類決定實例化哪一個類。工廠方法使一個類的實例化延遲到其子類
(1)簡單工廠模式:一個工廠+一個運算基類+n個具體的運算類
(2)工廠模式:簡單工廠+n個具體的工廠(解決簡單工廠的高耦合,缺點是每增加一個產品類,就需要增加一個對應的工廠類,增加了額外的開發量)
(3)抽象工廠模式:(解耦,例業務邏輯與數據訪問的解耦)(https://cloud.tencent.com/developer/article/1394271)