《GeekBand》C++设计模式02
来源:互联网 发布:考试宝典怎么样知乎 编辑:程序博客网 时间:2024/06/14 23:00
工厂方法(简单工厂)
定义:
定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method是得一个类的实例化延迟(目的:解耦,手段:虚函数)到子类。——《设计模式》GoF
exp:实现一个多类型的分割器
//抽象类class ISplitter{public: virtual void split()=0; virtual ~ISplitter(){}};//工厂基类class SplitterFactory{public: virtual ISplitter* CreateSplitter()=0; virtual ~SplitterFactory(){}};//具体类class BinarySplitter : public ISplitter{ };class TxtSplitter: public ISplitter{ };class PictureSplitter: public ISplitter{ };class VideoSplitter: public ISplitter{ };//具体工厂class BinarySplitterFactory: public SplitterFactory{public: virtual ISplitter* CreateSplitter(){ return new BinarySplitter(); }};class TxtSplitterFactory: public SplitterFactory{public: virtual ISplitter* CreateSplitter(){ return new TxtSplitter(); }};class PictureSplitterFactory: public SplitterFactory{public: virtual ISplitter* CreateSplitter(){ return new PictureSplitter(); }};class VideoSplitterFactory: public SplitterFactory{public: virtual ISplitter* CreateSplitter(){ return new VideoSplitter(); }};class MainForm : public Form{ SplitterFactory* factory;//工厂public: MainForm(SplitterFactory* factory){ this->factory=factory; } void Button1_Click(){ ISplitter * splitter= factory->CreateSplitter(); //多态new splitter->split();}};
工厂模式用于隔离对象使用者和具体类型的紧耦合关系。通过面向对象的手法将具体工作延迟到子类,实现了解耦。
缺点:要求创建方法和参数相同
遗留问题,外层如何选择该创建的类型呢?使用参数传递,感觉还是需要指定啊,还是有耦合关系啊。
0 0
- 《GeekBand》C++设计模式02
- 《GeekBand》C++设计模式01
- GeekBand C++ 设计模式 第一周笔记
- GeekBand C++ 设计模式 第二周笔记
- GeekBand笔记-《C++设计模式》第一周
- GeekBand笔记-《C++设计模式》第二周
- GeekBand笔记-《C++设计模式》 第三周
- geekband android #5 第十四周分享(设计模式)
- Geekband 设计模式 第一周笔记 暗影行者
- GeekBand C++ C++设计模式 第八周笔记
- GeekBand C++ C++设计模式 第九周笔记
- 《GeekBand》系统设计与实践01
- GeekBand C++STL第二周笔记
- 设计模式----工厂模式(c++)
- 【设计模式C++】工厂模式
- C++/设计模式
- 设计模式[C++]
- C和设计模式
- Android学习之shape属性
- 《Java编程思想第四版》笔记---18章(7) I/O 文件锁定,文件压缩
- 数据结构练习题 约瑟夫环—用循环链表实现
- html js 定制进度条 (二)
- 2.4.2节练习
- 《GeekBand》C++设计模式02
- 修改host,上github
- U-Boot Environment Variables
- HDU 1757 矩阵快速幂模版
- Linux分区
- Python生成随机数
- C#之WinForm基础 设置文件对话框只能看到所有类型的文件
- WSAAsyncSelect模型
- 设计模式——桥接模式(C++)