C++ 设计模式 (一) 工厂模式
来源:互联网 发布:哈德斯菲尔德大学 知乎 编辑:程序博客网 时间:2024/04/29 08:19
Factory模式的主要作用有两个:1.定义对象的创建借口,封装对象的创建过程;2.将对象的创建推迟到子类中去实现。
在实际的开发过程中,我们往往创建的并不是基类本身而是其子类,但是子类的类名又不能提前知道,为了解决这个问题,只能将子类的创建推迟,Factory模式为这种问题的解决提供了一个很好的方案。同时,过多的不同子类的创建导致命名的苦难和程序结构的混乱,Factory模式为管理这些子类的创建提供了方便。
Factory 设计模式结构示意图
给出一个具体的例子
fruite.h(命名时多打了个e)
定义了3个类,Apple和Orange继承自Fruit,注意将Fruit的构造函数设置为protected访问权限,使其不能构造Fruit抽象对象,grow为virtual函数,方便检验,其实grow可以设置为纯虚函数的。
fruit.cpp
factory.h
在这里定义抽象基类Factory,OrangeFactory和AppleFactory,其中createFruit为虚函数,生成Fruit对象
factory.cpp
main.cpp
将实现的factory模式具体应用
上面的Factory2类等会在解释。我们可以看到为了生成Fruit子类我们创建了AppleFactory和OrangeFactory两个具体的工厂类,这样会导致类的增多,我们也可以在一个类中提供不同的创建接口来实现,但是问题是一样的会导致接口的增加和命名管理的复杂度。一个可行的方法是为createFruit接口提供不同的参数来创建不同的Fruit对象。我开始尝试用mfc中的宏来实现,但是发现看得懂是一回事,会做又是另一回事,只能改用其他方法来实现,该方法在添加新类的时候可能需要修改一下方法。
factory2.h
factory2.cpp
可以看到,通过对传入类名,对传入的字符串的判断来生成不同的Fruit对象,有新的子类时只需添加新的判定条件即可。
- 设计模式c++(一)----工厂模式
- Java设计模式:工厂模式(一)简单工厂模式
- C++ 设计模式 (一) 工厂模式
- 设计模式之 工厂模式(一)
- 设计模式之工厂模式(一)
- 模式设计(一)------工厂模式
- 设计模式(一)--静态工厂模式
- 设计模式-工厂模式(一)
- 设计模式(一):简单工厂模式
- 设计模式(一)--工厂模式
- 设计模式(一):工厂方法模式
- 设计模式(一)简单工厂模式
- java设计模式(一)---工厂模式
- Java设计模式----工厂模式(一)
- C++设计模式(一) 工厂模式
- 设计模式(一)简单工厂模式
- 设计模式学习(一)工厂模式
- c++设计模式(一)工厂模式
- 如何消除EDIT控件设置为只读情况下的灰色背景,能改为白色或其他背景?[
- 什么是共享软件?
- 史蒂夫 乔布斯(Steve Jobs)在 Stanford 2005 毕业典礼上的演讲
- 家教日记---7.18.
- 實現狀態欄和文本框內容的動態效果
- C++ 设计模式 (一) 工厂模式
- SAP PS PA考试心得 (项目模块)
- C的整形变量在Turbo C、VC++、Linux下的大小
- 偶连接数据库同步方案的选择
- kitty猫的基因编码
- 一篇经典的 介绍netbeans中swing 应用程序框架的文章
- 高手的Blog及ACM好的网站[转]
- 海量数据库的查询优化及分页算法方案
- Deferred shading with SSAO