1、面向介面程式設計:最簡單的表現形式是,你的變數要宣告成抽象基類;
2、為什麼要實現面向介面程式設計:設計原則:依賴倒置原則——應該依賴抽象而不是細節。
3、抽象基類是不能建立的,不能new的。
4、建立物件的方法:除了在棧上、或者是在堆上建立物件,也可以通過方法返回物件。
5、虛函式:執行時的依賴
模式定義:定義乙個用於建立物件的介面(工廠基類);讓子類(子類工廠)決定例項化哪乙個類(具體類);
目的:解耦,手段是虛函式
要點總結:
factory method用於隔離類物件的使用這和具體類之間的耦合關係。而對於乙個經常變化具體型別,耦合關係會導致軟體的脆弱;
factory method模式通過物件導向的手法,將所要建立的具體物件工作延遲到子類,從而實現一種擴充套件的策略,較好的解決這種緊耦合關係。
factory method模式解決「單個物件」的需求華變化。缺點在與要求建立方法相同
具體類圖關係
具體實現如下:
product實現:
spliter.h
#pragma once
#includeusing namespace std;
//產品product基類
class ispliter
;//具體產品
//產品一:二進位制切割器
class binaryspliter :public ispliter
};class vediospliter :public ispliter
};//產品三:檔案切割器
class filespliter :public ispliter
};
creator實現:
factory.h
#pragma once
#include"ispliter.h"
//創造器creator基類介面
class splite***ctory
;//具體的建立器工廠
//工廠一:二進位制切割器創造工廠
class binarysplite***ctory :public splite***ctory
};class vediosplite***ctory :public splite***ctory
};//工廠三:檔案切割器創造工廠
class filesplite***ctory :public splite***ctory
};
使用者實現:
#pragma once
//物件的使用者
#include"splite***ctory.h"
class mainform
public:
ispliter* button1_click()
private:
splite***ctory* factory;
};
測試:
#include"mainform.h"
int main()
C 設計者模式 抽象工廠
前半句話可以這樣理解 oracle資料庫,和oracle命令相依賴 mysql資料庫和mysql命令相互依賴 如果oracle資料庫使用mysql命令,可能就會報錯 後半句話 除了有o染成了資料庫,還可能有mysql資料庫,還可以有其他的資料庫 抽象工廠模式是特殊的工廠模式 如下 產品product...
01設計者模式 簡單工廠模式
簡單工廠模式 解決問題 簡單工廠模式解決的問題是去例項化物件的問題,假如將來要增加例項化物件,我們可以通過工廠來輔助我們建立物件,從而達到 松耦合的問題.工廠可以通過客戶端傳過來的引數來例項化不同的物件.需求 我們需要做幾個簡單的計算器,需要把客戶端傳過來的兩個數字進行運算 v1版本為簡單工廠模式 ...
C 設計者模式 策略模式
策略模式 某些物件使用的演算法可能多種多樣,經常改變,如果將這些演算法編碼到 中,會使 變得異常負責,而且有時候支援不使用的演算法可能是一種效能負擔。對於上面描述可以舉如下的列子解釋。比如如下 所示 pragma once includeusing namespace std 假如我們要實現乙個功能...