c 設計者模式 工廠模式

2021-10-03 11:22:34 字數 1637 閱讀 7935

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 假如我們要實現乙個功能...