Factory Method模式讲解
来源:互联网 发布:野生程序员博客 编辑:程序博客网 时间:2024/05/16 12:22
Factory Method模式讲解
零:FactoryMethod模式两个最重要的功能:
1)定义创建对象的接口,封装了对象的创建。
2)使得具体化类的工作延迟到了子类中。//抽象基类只是提供了对象创建的接口,其实现放在抽象基类的派生类中。
一、解决的问题:
1、为提高内聚和松耦合,抽象出一些类的公共接口形成了抽象基类或接口。当用一个指向基类的指针来指向派生类时,需要用
new DrivedClass,此时客户必须知道子类的名称,并且程序的扩展和维护变得越来越困难。
2、在一个要使用抽象基类的类中并不知道要实例化抽象基类的哪一个子类,但是在该类的子类中知道。
二、C++代码实现:
//product.h
#ifndef PRODUCT_H#define PRODUCT_Hclass Product{public: ~Product();protected: Product();};class ConcreteProduct : public Product{public: ConcreteProduct(); ~ConcreteProduct();};#endif // PRODUCT_H//product.cpp
#include "product.h"#include <iostream>using namespace std;Product::Product(){}Product::~Product(){}ConcreteProduct::ConcreteProduct(){ cout << "ConcreteProduct..." << endl;}ConcreteProduct::~ConcreteProduct(){}
//factory.h
<pre name="code" class="cpp">#ifndef FACTORY_H#define FACTORY_Hclass Product;class Factory{public: virtual ~Factory() = 0; virtual Product* CreateProduct() = 0; //创建对象的接口protected: Factory();};class ConcreteFactory : public Factory{public: ~ConcreteFactory(); ConcreteFactory(); Product* CreateProduct(); //创建对象接口的实现 //也可传递一个参数用以决定创建哪一个具体的Product};#endif // FACTORY_H
//factory.cpp
#include "factory.h"#include "product.h"#include <iostream>using namespace std;Factory::Factory(){}Factory::~Factory(){}ConcreteFactory::ConcreteFactory(){ cout << "ConcreteFactory..." << endl;}ConcreteFactory::~ConcreteFactory(){}Product* ConcreteFactory::CreateProduct(){ return new ConcreteProduct();}//main.cpp
#include "factory.h"#include "product.h"#include <iostream>using namespace std;int main(){ Factory* fac = new ConcreteFactory(); Product* p = fac->CreateProduct(); return 0;}
三、存在的问题:
FactoryMethod模式仅仅局限于一类类(即有共同的基类),如果要为不同种类的类提供一个创建对象的接口,
需使用AbstractFactory模式。
0 0
- Factory Method模式讲解
- 使用Factory Method模式
- Factory Method设计模式
- Factory Method模式
- Factory method 模式
- Factory Method 工厂模式
- Factory Method - 工厂模式
- Factory Method设计模式
- 工厂模式(Factory Method)
- 设计模式 Factory Method
- factory method模式
- 设计模式--Factory Method
- Factory Method 模式
- Factory Method模式
- 工厂模式(Factory Method)
- 设计模式-Factory method
- Factory Method模式
- Factory Method模式
- onblur()导致循环调用
- Python内置函数__import__和eval用法
- Command /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang
- JVM内存管理-运行时数据
- 正则表达式 学习网站
- Factory Method模式讲解
- Bro Sorting(2014ACM/ICPC亚洲区北京站-K)
- 游戏引擎加入lua
- android之Fragment的bug解决
- C++中在子函数中动态分配内存
- C/C++中const关键字详解
- Python 列表元素去重的3种方法
- (转)常见Web安全漏洞
- 黑马程序员——反射基础知识