good:客戶端只需訪問 context 類,而不用知道其它任何類資訊,實現了低耦合。
在上例基礎上,修改下面內容
//策略基類
class coperation
};//策略具體類—加法類
class addoperation : public coperation
addoperation()
virtual double getresult() };
class context
} double getresult()
private:
coperation *op;
};int main()
執行結果:
單一職責原則:就乙個類而言,應該僅有乙個引起它變化的原因。如果乙個類承擔的職責過多,就等於把這些職責耦合在一起, 乙個職責的變化可能會削弱或者抑制這個類完成其它職責能力。這種耦合會導制脆弱的設計,當變化發生時,設計會遭受到意想不到的破壞。如果你能夠想到多於乙個的動機去改變乙個類,那麼這個類就具有多於乙個的職責。
開放 ――封閉原則:軟體實體可以擴充套件,但是不可修改。即對於擴充套件是開放的,對於修改是封閉的。面對需求,對程式的改動是通過增加**來完成的,而不是改動現有的**。當變化發生時,我們就建立抽象來隔離以後發生同類的變化。開放――封閉原則是物件導向的核心所在。 開發人員應該對程式中呈現出頻繁變化的那部分做出抽象,拒絕對任何部分都刻意抽象及不成熟的抽象。
黎克特制代換原則:乙個軟體實體如果使用的是乙個父類的話,那麼一定適用其子類。而且它察覺不出父類物件和子類物件的區別。也就是說:在軟體裡面,把父類替換成子類,程式的行為沒有變化。子型別必須能夠替換掉它們的父型別。
依賴倒轉原則:抽象不應該依賴細節,細節應該依賴抽象。即針對介面程式設計,不要對實現程式設計。高層模組不能依賴低層模組,兩者都應依賴抽象。依賴倒轉原則是物件導向的標誌,用哪種語言編寫程式不重要,如果編寫時考慮的是如何針對抽象程式設計而不是針對細節程式設計,即程式的所有依賴關係都終止於抽象類或介面。那就是物件導向設計,反之那就是過程化設計。
6 大話設計模式 工廠模式
工廠模式和簡單工廠有什麼區別。廢話不多說,對比第一篇例子應該很清楚能看出來。優點 工廠模式彌補了簡單工廠模式中違背開放 封閉原則,又保持了封裝物件建立過程的優點。using system using system.collections.generic using system.linq using...
一 大話設計模式之簡單工廠
主要用於建立物件。新新增類時,不會影響以前的系統 核心思想是用乙個工廠來根據輸入的條件產生不同的類,然後根據不同類的 virtual 函式得到不同的結果 基類 class coperation 加法 class addoperation public coperation 減法 class subo...
15 大話設計模式C 實現之抽象工廠模式
例項 不同客戶的資料庫管理採用不同的資料庫完成,不同的資料庫在語法上存在差異,因此需要 解除使用者和具體資料庫之間的耦合 即業務邏輯與資料訪問的解耦 避免向不同型別的客戶提供支援時的 復用 include include using namespace std idepartment介面,用於客戶端...