设计模式之抽象工厂模式(AbstructFactory)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了设计模式之抽象工厂模式(AbstructFactory),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2719字,纯文字阅读大概需要4分钟。
内容图文
抽象工厂模式(AbstructFactory)
优点:
1.可以支持不同类型的产品,使得产品的灵活性更强
2.可以很方便的一族中间的不同类型的产品
缺点:
结构过于臃肿,如果产品类型过大,就会难以管理
代码实现:
AbstructFactory.h
#ifndef ABSTRUCTFACTORY_H #define ABSTRUCTFACTORY_H /*ProductA*/ class AbstructProductBaseA { public: AbstructProductBaseA(){} ~AbstructProductBaseA(){} virtual void show(); }; class ProductA : public AbstructProductBaseA { public: ProductA(){} ~ProductA(){} void show(); }; class ProductB : public AbstructProductBaseA { public: ProductB(){} ~ProductB(){} void show(); }; /*ProductAA*/ class AbstructProductBaseAA { public: AbstructProductBaseAA(){} ~AbstructProductBaseAA(){} virtual void show(); }; class ProductAA : public AbstructProductBaseAA { public: ProductAA(){} ~ProductAA(){} void show(); }; class ProductBB : public AbstructProductBaseAA { public: ProductBB(){} ~ProductBB(){} void show(); }; /*Factory*/ class AbstructFactory { public: AbstructFactory(){} ~AbstructFactory(){} virtual AbstructProductBaseA *createProductA() = 0; virtual AbstructProductBaseAA *createProductAA() = 0; }; class FactoryA : public AbstructFactory { public: FactoryA(){} ~FactoryA(){} AbstructProductBaseA *createProductA(); AbstructProductBaseAA *createProductAA(); }; class FactoryB : public AbstructFactory { public: FactoryB(){} ~FactoryB(){} AbstructProductBaseA *createProductA(); AbstructProductBaseAA *createProductAA(); }; #endif // ABSTRUCTFACTORY_H
AbstructFactory.cpp
#include "abstructfactory.h" #include <iostream> void AbstructProductBaseA::show() { std::cout << "this is AbstructProductBaseA" << std::endl; } void ProductA::show() { std::cout << "this is ProductA" << std::endl; } void ProductB::show() { std::cout << "this is ProductB" << std::endl; } void AbstructProductBaseAA::show() { std::cout << "this is AbstructProductBaseAA" << std::endl; } void ProductAA::show() { std::cout << "this is ProductAA" << std::endl; } void ProductBB::show() { std::cout << "this is ProductBB" << std::endl; } AbstructProductBaseA *FactoryA::createProductA() { return new ProductA; } AbstructProductBaseAA *FactoryA::createProductAA() { return new ProductAA; } AbstructProductBaseA *FactoryB::createProductA() { return new ProductB; } AbstructProductBaseAA *FactoryB::createProductAA() { return new ProductBB; }
main.cpp
#include <iostream> #include "abstructfactory.h" int main() { AbstructFactory *factory = new FactoryA; factory->createProductA()->show(); factory->createProductAA()->show(); factory = new FactoryB; factory->createProductA()->show(); factory->createProductAA()->show(); return 0; }
原文:http://blog.csdn.net/fu1201520/article/details/51330403
内容总结
以上是互联网集市为您收集整理的设计模式之抽象工厂模式(AbstructFactory)全部内容,希望文章能够帮你解决设计模式之抽象工厂模式(AbstructFactory)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。