實驗環境 ubuntu14.04
#ifndef __******factory_h_
#define __******factory_h_
#include
#include
#include
class carbase
virtual ~carbase() = default;
protected:
carbase() = default;
carbase(std::string name_):name(name_){}
private:
std::string name;
};class gmcar : public carbase
void printname()
~gmcar() = default;
};class fordcar : public carbase
void printname()
~fordcar() = default;
};class toyotacar : public carbase
void printname()
~toyotacar() = default;
};//由乙個工廠物件(factory)決定建立出哪一種產品(product)的例項
class ca***ctory
};#endif
#include
"******factory.h"
int main()
簡單工廠由於工廠類集中了所有例項的建立邏輯,違反了高內聚的責任分配原則,將全部邏輯集中到了乙個
工廠類中;它所能建立的類只能是事先考慮到的,如果需要新增新的類,則就需要改變工廠類了。
設計模式C 實現二 策略模式
策略模式 strategy 定義演算法家族,分別封裝起來,讓這些演算法直接可以相互替換,我們可以自由新增或者修改演算法而不會影響客戶.優點 簡化了單元測試,因為每個演算法都有自己的類,可以通過自己的介面單獨測試。如果我們在客戶端為了判斷使用哪個演算法而使用switch語句來分析,我們可以使用策略模式...
設計模式之裝飾模式 C 實現
有時候我們需要在某個類已有的功能中新增新的功能。此時我們可以用繼承的方式來給類新增功能。我們也可以用裝飾模式來實現。裝飾模式,動態的給乙個物件新增功能。與繼承的方式相比,它更有靈活性。裝飾模式實現思路是。在原有物件上嵌入想要擴充套件的裝飾器。裝飾器實現裝飾功能。其中,component定義乙個物件介...
設計模式之裝飾者模式C 實現
軟體領域中的設計模式為開發人員提供了一種使用專家設計經驗的有效途徑。設計模式中運用了物件導向程式設計語言的重要特性 封裝 繼承 多型,真正領悟設計模式的精髓是可能乙個漫長的過程,需要大量實踐經驗的積累。最近看設計模式的書,對於每個模式,用c 寫了個小例子,加深一下理解。主要參考 大話設計模式 和 設...