设计模式---简单工厂模式(c++实现)
来源:互联网 发布:影楼设计软件 编辑:程序博客网 时间:2024/05/29 13:17
//简单工厂模式:
// 将所有的产品的创建工作都交给一个工厂类去完成,然后在创建出对象之后,返回产品类的基类指针。
//在我看来,这就是多态的极致发挥,对象的绑架技术(使用基类指针去操作,派生类的产品)
// 就是将产品封装出一个抽象类,然后去派生出不同的类去创建不同的产品。这么抽象的目的是,
// 提供操作对象的统一接口(可以使用基类指针去调用不同的子类对象的成员函数,实现多态)
/***************************************************************
#include <iostream>
using namespace std;
class Fruit
{
public:
virtual void getFruit() = 0;
};
class Banana : public Fruit
{
public:
virtual void getFruit()
{ cout << "香蕉" << endl;}
};
class Pear : public Fruit
{
public:
virtual void getFruit()
{ cout << "梨子" << endl;}
};
class Factory
{
public:
static Fruit* Create(char *name)
{
Fruit *tmp = NULL;
if (strcmp(name, "pear") == 0)
{ tmp = new Pear();}
else if (strcmp(name, "banana") == 0)
{ tmp = new Banana();}
else
{ return NULL;}
return tmp;
}
};
void main()
{
Fruit *pear = Factory::Create("pear");
if (pear == NULL)
{ cout << "创建pear失败\n";}
pear->getFruit();
Fruit *banana = Factory::Create("banana");
banana->getFruit();
system("pause");
// 将所有的产品的创建工作都交给一个工厂类去完成,然后在创建出对象之后,返回产品类的基类指针。
//在我看来,这就是多态的极致发挥,对象的绑架技术(使用基类指针去操作,派生类的产品)
// 就是将产品封装出一个抽象类,然后去派生出不同的类去创建不同的产品。这么抽象的目的是,
// 提供操作对象的统一接口(可以使用基类指针去调用不同的子类对象的成员函数,实现多态)
/***************************************************************
基类指针,指向哪个对象,就可以调用哪个对象的成员函数 这句话超级重点
这也是设计模式能够这么猛的根本原因(多态)
***************************************************************/#include <iostream>
using namespace std;
class Fruit
{
public:
virtual void getFruit() = 0;
};
class Banana : public Fruit
{
public:
virtual void getFruit()
{ cout << "香蕉" << endl;}
};
class Pear : public Fruit
{
public:
virtual void getFruit()
{ cout << "梨子" << endl;}
};
class Factory
{
public:
static Fruit* Create(char *name)
{
Fruit *tmp = NULL;
if (strcmp(name, "pear") == 0)
{ tmp = new Pear();}
else if (strcmp(name, "banana") == 0)
{ tmp = new Banana();}
else
{ return NULL;}
return tmp;
}
};
void main()
{
Fruit *pear = Factory::Create("pear");
if (pear == NULL)
{ cout << "创建pear失败\n";}
pear->getFruit();
Fruit *banana = Factory::Create("banana");
banana->getFruit();
system("pause");
}
来源------传智博客---王保明
0 0
- 设计模式 - 简单工厂模式(C++)
- 设计模式之简单工厂,工厂方法模式(c++)
- C#--简单工厂设计模式
- C#--设计模式之简单工厂模式
- 简单工厂模式(C语言实现)
- 设计模式 -- 简单工厂模式 -- c++实现
- 设计模式-简单工厂模式 C++实现
- 设计模式之简单工厂模式(使用C++)
- 设计模式——简单工厂模式(C++)
- C语言实现设计模式之简单工厂模式(无内存泄露)
- 设计模式实现(一)---简单工厂模式
- 大话设计模式(C++实现)--简单工厂模式
- 【设计模式 】一 简单工厂模式 (python实现)
- 设计模式之简单工厂模式(C++实现)
- 设计模式---简单工厂模式(c++实现)
- 设计模式的实现(C++)------工厂方法模式(FactoryMethod)
- 设计模式的实现(C++)------抽象工厂模式(AbstractFactory)
- 设计模式(简单工厂)
- 贝叶斯估计和极大似然估计到底有何区别
- inode节点销毁
- Leetcode divide & conquer || Different Ways to Add Parentheses
- js 文件的加载解析
- Mysql和服务器相连接的部分代码
- 设计模式---简单工厂模式(c++实现)
- java重载和重写的区别(转)
- C++ -浅拷贝和深拷贝
- HTML5新的API
- 204. Count Primes(埃拉托色尼)
- BC范式介绍
- 密码学综述
- 测鬼记(上)——报到(二)
- JDK、JRE、JVM三者的区别