這裡說的工廠模式是簡單工廠模式和抽象工廠模式,兩者有一定的區別,也有共同之處。
上述過程是開閉原則的乙個典型體現。
在下圖的例子中,factory類依賴具體物件的抽象來建立具體的物件(dell,sony)。這乙個過程帶來的好處就是實現了factory類與具體產品之間的解耦合。客戶端可以自由的通過factory類來建立物件實體。
案例**:
#include
#include
using
namespace
std;
class absproduct
;class sonyproduct : public absproduct
};class dellproduct : public absproduct
};class factory
};int main()
分析上述過程,假設現在我們要新增乙個具體的產品,那麼需要修改哪些部分呢?
上述兩步就可以實現乙個新產品的新增,但是修改factory類這一點上違背了開閉原則(我們只想新增**,不想修改原來的**!)為了解決這個問題,抽象工廠就出現了。
這個改造過後,我們僅僅去新增我們需要的產品,不用去修改原來的**。
#include
#include
using namespace std;
class absproduct
;class sonyproduct : public absproduct
};class dellproduct : public absproduct
};class factory
;class dellfactory : public factory
};class sonyfactory : public factory
};int main()
抽象工廠就是在上述的基礎上,對工廠類進行重構,使得工廠類不僅僅產生出單一的產品。比如下例。
在實際應用中,簡單工廠模式使用的非常普遍。比如乙個pacs系統,假設系統需要在多家醫院執行,然而各家醫院使用的資料庫又是不同的(一般為oracle或者db2)。為了使得**容易維護和管理,資料的訪問就可以使用簡單工廠模式進行構建。
在博主接觸的實際專案中,為了相容不同的資料庫就採用了上述的做法。指定的資料庫型別寫在配置檔案中,程式啟動時去讀配置檔案,然後判斷建立什麼資料庫的例項。這個過程方便了開發人員對**的維護和管理。
設計模式學習 工廠模式
工廠模式是較常見的一種設計模式 一 基本特點 工廠模式可分為簡單工廠模式,工廠模式和抽象工廠模式,它們的思路和實現都很相似.基本特點為至少包括以下三個類 工廠類 用new操作符建立各種產品類 抽象產品類 各產品類的基類,定義了產品的介面,具體產品類 抽象產品類的子類,包含了具體實現 使用者在使用時通...
設計模式 工廠模式(學習)
在程式的世界裡,就像射鵰英雄傳一樣,我們的技能就像是武功一樣,我們只有不斷去學習練習才能有機會像郭靖一樣成為 天下第一 我認為技能和武功是很類似的,也有外功和內功,武俠之內功好比是我們技能演算法 武俠的外功好比是我們技能中某一語言的語法 武功秘籍好比是我們每種語言都有api和文件 武俠的勤加練習好比...
設計模式學習 工廠模式
工廠模式 常用的工廠模式包括三種 簡單工廠 普通工廠以及抽象工廠模式。1 簡單工廠模式 package com.demo.factory 介面類 public inte ce shapepackage com.demo.factory public class circle implements s...