您的位置:首页 > 编程语言 > C语言/C++

c++设计模式(2)--------简单工厂模式

2015-12-07 17:16 260 查看

简介

简单工厂模式,也叫做静态工厂模式,通过专门定义一个类来负责其他类的创建,被创建的类通常有一个共同的父类。

1)工厂角色:是工厂模式的核心,负责创建实例对象内部的逻辑。可以被外界调用,创建所需要的产品。

2)抽象产品:简单工厂模式所创建产品的父类,负责描述产品的公共接口

3)具体产品:具体的实例对象

优缺点:工厂类是简单工厂模式的核心所在,包含必要的创建逻辑,能够根据外部给定的信息创建需要的具体产品。用户不要去了解具体的产品是如何创建以及如何组织的。工厂类集中了所有实例的创建逻辑,当产品增加时,需要修改工厂类内部的判断。扩展性不高。

例子

抽象产品类

class  Friut
{
public:
virtual void sayName() = 0;
};


具体产品类

class apple : public Friut
{
public:
virtual void sayName()
{
cout<<"this is apple "<<endl;
}
};
class banana : public Friut
{
public:
virtual void sayName()
{
cout<<"this is banana "<<endl;
}
};


工厂类的表示

class factory
{
public:
static Friut *  putCreate(string str)//静态方法意味着我们不需要去创建一个实例去调用该函数,可以直接通过类来调用,对于编程可以更加方便
{
if(strcmp(str , "apple"))
{
return new apple;
}
else if(strcmp(str , "banana"))
{
return new banana;
}
else
{
cout<<"buzhiche"<<endl;
}
}

private:
};


客户就可以这样去调用了

#include<iostream.h>

void main()
{
friut * fa =  factory::putCreate("apple");
fa->sayName();
delete fa;

system("pause");
}


总结

1)简单工厂类面向抽象产品类编程,而不是我们面向抽象类编程

2)添加新类时,不会影响已存在的代码

3) 适用于根据不同条件创建不同的类,但是客户端必须知道工厂类和抽象产品类
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息