设计模式---3(工厂方法模式的概念,工厂方法模式的实现,工厂方法模式和简单工厂模式比较)
生活随笔
收集整理的這篇文章主要介紹了
设计模式---3(工厂方法模式的概念,工厂方法模式的实现,工厂方法模式和简单工厂模式比较)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
工廠方法模式
概念
工廠方法模式同樣屬于類的創建型模式又被稱為多態工廠模式 。
工廠方法模式的意義
定義一個創建產品對象的工廠接口,將實際創建工作推遲到子類當中。 核心工廠類不再負責產品的創建,這樣核心類成為一個抽象工廠角色,僅負責具體工廠子類 必須實現的接口,這樣進一步抽象化的好處是使得工廠方法模式可以使系統在不修改具體工廠角色的情況下引進新的產品。
工廠方法模式的角色和職責
抽象工廠(Creator)角色
工廠方法模式的核心,任何工廠類都必須實現這個接口。
具體工廠( Concrete Creator)角色
具體工廠類是抽象工廠的一個實現,負責實例化產品對象。
抽象(Product)角色
工廠方法模式所創建的所有對象的父類,它負責描述所有實例所共有的公共接口。
具體產品(ConcreteProduct)角色
工廠方法模式所創建的具體實例對象
工廠方法模式的實現
#include<iostream> using namespace std;//抽象水果 class AbstractFruit{ public:virtual void ShowName() = 0;};//蘋果 class Apple :public AbstractFruit{virtual void ShowName(){cout << "我是蘋果" << endl;} };//香蕉 class Banana :public AbstractFruit{ public:virtual void ShowName(){cout << "我是香蕉" << endl;} };//梨子 class Pear :public AbstractFruit{ public:virtual void ShowName(){cout << "我是梨子" << endl;} };//把工廠抽象出來 class AbstractFruitFactory{ public:virtual AbstractFruit* CreateFruit() = 0;}; //蘋果工廠 class AppleFactiry :public AbstractFruitFactory{ public:virtual AbstractFruit *CreateFruit(){return new Apple;} }; //香蕉工廠 class BananaFactory :public AbstractFruitFactory{ public:virtual AbstractFruit * CreateFruit(){return new Banana;} };//梨子工廠 class PearFactory :public AbstractFruitFactory{ public:virtual AbstractFruit * CreateFruit(){return new Pear;} };void test01(){AbstractFruitFactory *factory = NULL;AbstractFruit *fruit = NULL;//創建蘋果工廠factory = new AppleFactiry;fruit = factory->CreateFruit();fruit->ShowName();delete fruit;delete factory;//創建一個香蕉工廠factory = new BananaFactory;fruit = factory->CreateFruit();fruit->ShowName();delete fruit;delete factory;//創建一個梨子工廠factory = new PearFactory;fruit = factory->CreateFruit();fruit->ShowName();delete fruit;delete factory; }int main(void) {test01();system("pause");return 0; }工廠方法模式的優點
工廠方法模式的缺點
工廠方法模式和簡單工廠模式比較
簡單工廠模式的適用場景
工廠方法模式的適用場景
總結
以上是生活随笔為你收集整理的设计模式---3(工厂方法模式的概念,工厂方法模式的实现,工厂方法模式和简单工厂模式比较)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 点击图片链接不是打开 而是下载 财
- 下一篇: 设计模式---4(抽象工厂模式的概念,产