设计模式(七)factory method
来源:互联网 发布:阿里云acp认证 编辑:程序博客网 时间:2024/06/05 06:27
1.使用场景:需要创建的对象的具体类型经常变化,多态“new”
2.理论依据:虚函数、多态
3.定义:用于创建对象的接口,让子类决定实例化哪一个类,
使得一个类的实例化延迟(目的:解耦,手段:虚函数)到子类
4.步骤:创建工厂基类(含纯虚函数),并创建工厂子类,各工厂子类对应不同的需创建的类型,通过调用工厂基类指针实现多态“new”。
5.技法:早绑定->晚绑定
6.变化:对应不同的需创建的对象,要有不同子类工厂
不变:工厂指针所在类的代码
原代码:
class ISplitter{public: virtual void split()=0; virtual ~ISplitter(){}};class BinarySplitter : public ISplitter{ };class TxtSplitter: public ISplitter{ };class PictureSplitter: public ISplitter{ };class VideoSplitter: public ISplitter{ };class MainForm : public Form{TextBox* txtFilePath;TextBox* txtFileNumber;ProgressBar* progressBar;public:void Button1_Click(){ ISplitter * splitter= new BinarySplitter();//依赖具体类 splitter->split();}};
使用factory method 模式的代码:
//抽象类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
- 设计模式(七)factory method
- Factory Method设计模式
- Factory Method设计模式
- 设计模式 Factory Method
- 设计模式--Factory Method
- 设计模式-Factory method
- 设计模式(三):Factory Method模式
- 设计模式(三):Factory Method模式
- 设计模式-工厂方法(Factory Method)
- 工厂方法(Factory Method)设计模式
- 设计模式一(Factory Method,Abstract Factory)
- 设计模式之Factory Method
- 设计模式之Factory method
- 设计模式之factory method
- 设计模式学习--Factory Method
- [设计模式]2. Factory Method
- 设计模式-工厂模式(Factory Method模式)
- (Boolan)C++设计模式 <七> ——工厂方法(Factory Method)、 抽象工厂(Abstract Factory)、原型模式(Prototype)、构建器(Builder)
- KMP算法 Next数组详解(【洛谷3375】KMP字符串匹配 )
- hadoop3种集群方式搭建---独立模式
- 阅读-《诗经·秦风·无衣》
- 洛谷 P1272 重建道路
- load和initialize的区别
- 设计模式(七)factory method
- 【微机实验系列】基于微机的串行通信口扩展
- linux网络编程第二讲
- javascript 原型与原型链详解
- 《Algorithms》第八章课后习题8.10题解
- caffe典型识别示例CIFAR_10的运行详解
- 【Linux 虚拟机】VMware虚拟机安装Ubuntu系统英文改中文的方法
- linux 内核编程 0-hello
- python中==和is的区别,a==b和a is b