创建型模式 工厂模式
生活随笔
收集整理的這篇文章主要介紹了
创建型模式 工厂模式
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
創(chuàng)建型模式 工廠模式
?
?
?
/*** 創(chuàng)建型模式 工廠模式* 工廠方法模式同樣屬于類的創(chuàng)建型模式又被稱為多態(tài)工廠模式 。* 符合"開放-封閉"原則 通過添加代碼的方式,不是通過修改代碼的方式完成功能的增強。* 工廠方法模式的意義是定義一個創(chuàng)建產(chǎn)品對象的工廠接口,將實際創(chuàng)建工作推遲到子類當(dāng)中。 * 核心工廠類不再負(fù)責(zé)產(chǎn)品的創(chuàng)建,這樣核心類成為一個抽象工廠角色,僅負(fù)責(zé)具體工廠子類必須實現(xiàn)的接口,這樣進一步抽象化的好處是使得工廠方法模式可以使系統(tǒng)在不修改具體工廠角色的情況下引進新的產(chǎn)品。** 抽象工廠(Creator)角色 * 工廠方法模式的核心,任何工廠類都必須實現(xiàn)這個接口。 * 具體工廠( Concrete Creator)角色 * 具體工廠類是抽象工廠的一個實現(xiàn),負(fù)責(zé)實例化產(chǎn)品對象。 * 抽象(Product)角色 * 工廠方法模式所創(chuàng)建的所有對象的父類,它負(fù)責(zé)描述所有實例所共有的公共接口。 * 具體產(chǎn)品(Concrete Product)角色 * 工廠方法模式所創(chuàng)建的具體實例對象**/#include <iostream>class Fruit { public:virtual void sayname() = 0;virtual ~Fruit() {} };class Banana: public Fruit { public:virtual void sayname() override{std::cout << "我是香蕉" << std::endl;} };class Pear: public Fruit { public:virtual void sayname() override{std::cout << "我是梨子" << std::endl;} };class AbFactory { public:virtual Fruit * CreateProduct() = 0;virtual ~AbFactory() {} };class BananaFactory: public AbFactory { public:virtual Fruit * CreateProduct() override{return new Banana;} };class PearFactory: public AbFactory { public:virtual Fruit * CreateProduct() override{return new Pear;} };void mytest() {AbFactory *factory = nullptr;Fruit *fruit = nullptr;factory = new BananaFactory();fruit = new Banana();fruit->sayname();delete factory;factory = nullptr;delete fruit;fruit = nullptr;factory = new PearFactory();fruit = new Pear();fruit->sayname();delete factory;factory = nullptr;delete fruit;fruit = nullptr;return; }int main() {mytest();system("pause");return 0; }?
總結(jié)
以上是生活随笔為你收集整理的创建型模式 工厂模式的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: nginx和pcre错误问题
- 下一篇: 在MAC下安装一些软件时提示来自身份不明