专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。它又称为静态工厂方法模式,属于类的创建型模式。
简单工厂模式的UML类图
简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类(这些产品类继承自一个父类或接口)的实例。
该模式中包含的角色及其职责
工厂(Creator)角色
简单工厂模式的核心,它负责实现创建所有实例的内部逻辑。工厂类可以被外界直接调用,创建所需的产品对象。
抽象(Product)角色
简单工厂模式所创建的所有对象的父类,它负责描述所有实例所共有的公共接口。
具体产品(Concrete Product)角色
是简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。
一般来讲它是抽象产品类的子类,实现了抽象产品类中定义的所有接口方法。
简单工厂模式的特点:
简单工厂模式的创建目标,所有创建的对象都是充当这个角色的某个具体类的实例。
在这个模式中,工厂类是整个模式的关键所在。它包含必要的判断逻辑,能够根据外界给定的信息,决定究竟应该创建哪个具体类的对象。用户在使用时可以直接根据工厂类去创建所需的实例,而无需了解这些对象是如何创建以及如何组织的。有利于整个软件体系结构的优化。
不难发现,简单工厂模式的缺点也正体现在其工厂类上,由于工厂类集中了所有实例的创建逻辑,所以“高内聚”方面做的并不好。另外,当系统中的具体产品类不断增多时,可能会出现要求工厂类也要做相应的修改,扩展性并不很好。
实例代码如下:
#include <iostream>
using namespace std;
//定义抽象类
class CAnimal
{
protected:
int m_weight; //重量
public:
virtual void Cry() = 0;
};
//定义具体类
class CFish : public CAnimal
{
public:
virtual void Cry()
{
cout<<"I am Fish!"<<endl;
}
};
class CBird : public CAnimal
{
public:
virtual void Cry()
{
cout<<"I am Bird!"<<endl;
}
};
//定义工厂类
class CFactory
{
public:
CAnimal* CreateObj(int flag)
{
switch(flag)
{
case 0:
return new CBird();
break;
case 1:
return new CFish();
break;
default:
break;
}
}
};
//测试类
int main(int argc, char* argv[])
{
//定义工厂对象
CFactory factory;
CAnimal* pAnimal;
pAnimal = factory.CreateObj(0);
pAnimal->Cry();
delete pAnimal;
pAnimal = factory.CreateObj(1);
pAnimal->Cry();
delete pAnimal;
return 0;
}
分享到:
相关推荐
工厂模式是C++软件开发中非常实用的设计模式之一,通过合理运用简单工厂、工厂方法和抽象工厂,可以有效地提升软件的结构清晰度、可维护性和扩展性。理解并掌握这些模式对于构建高质量、可扩展的软件系统至关重要。...
在标题“c++设计模式-工厂方法模式”中,我们关注的是如何在C++中实现工厂方法这一设计模式。工厂方法模式的核心思想是定义一个创建对象的接口,但让子类决定实例化哪一个类。这样,工厂方法可以使类的实例化过程...
简单工厂模式: 具体实现了一个计算器的代码,首先计算器应该具备对两个数字进行运算的功能,而运算的方法可以有很多种(最基础的有加,减,乘,除), 并且代码易于移植,这里是个console的应用台界面,也应该可以...
本Demo程序主要涵盖了两种常用的创建型设计模式——简单工厂模式(Simple Factory)和工厂方法模式(Factory Method)。这两种模式都是用来创建对象,但它们在灵活性和抽象程度上有所不同。 简单工厂模式是一种静态...
在软件设计模式中,简单工厂模式是一种常用的创建型模式,它提供了一个创建对象的接口,但允许子类决定实例化哪一个类。在这个案例中,"C++制作的简单工厂模式计算器"就是一个运用了简单工厂模式来构建计算器程序的...
本主题聚焦于C++中的三个工厂模式:简单工厂、工厂方法和抽象工厂。这些模式都围绕着对象的创建过程,旨在提高代码的灵活性、可读性和可维护性。 1. **简单工厂模式**: - 简单工厂模式是一种静态工厂方法,它提供...
C++设计模式例程,工厂模式例子,环境是VS2019打开即可运行 工厂模式也是平时我们编程用的比较多的一种行为设计模式,它提供了一种创建对象的最佳方式。工厂模式提供了一种创建对象的方式,而无需指定要创建的具体...
简单工厂模式是一种设计模式,它将对象的创建过程封装在一个单独的工厂类中,使得客户端无需知道具体的对象创建逻辑,只需通过工厂类提供的接口来获取所需对象。这种模式有助于降低系统的耦合度,提高可扩展性和可...
设计模式之语言c++版(工厂模式)本人结合实际工作加上参阅GoF+23种设计解析附C++实现一书。详细请进http://blog.csdn.net/m_x_c/article/details/8156555
《C++设计模式--基于Qt4开源跨平台开发框架》一书主要探讨了如何在C++编程中利用设计模式,并结合Qt4框架进行高效的跨平台应用开发。设计模式是软件工程中的重要概念,它们是经过时间和实践验证的解决特定问题的模板...
C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method)
本篇将深入探讨两种重要的设计模式:工厂模式和单例模式,以及如何在VC(Visual C++)环境下实现它们。 ### 工厂模式 **定义**:工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,当...
工厂,状态,观察者等18种设计模式 每一种设计模式有详细介绍,代码(C++),UML图工厂,状态,观察者等18种设计模式 每一种设计模式有详细介绍,代码(C++),UML图工厂,状态,观察者等18种设计模式 每一种设计...
本文将详细解析23种经典的设计模式,并结合C++语言在Visual C++ 6.0环境下进行代码实现。我们将探讨抽象工厂(Abstract Factory)、装饰者(Decorator)和工厂方法(Factory Method)这三种重要的设计模式。 首先,...
《设计模式精解-GoF 23 种设计模式解析附 C++实现源码》是一本深入探讨软件设计模式的书籍,它涵盖了创建型、结构型和行为型三种主要类型的23个经典设计模式,并提供了C++语言的实现代码。设计模式是软件工程中的...
简单工厂模式是软件设计模式中的一种基础模式,它属于创建型模式,主要用来解决对象创建的问题。这个模式的核心思想是将对象的创建过程封装到一个单独的类中,也就是所谓的“工厂”类,使得客户端代码在使用时无须...
C++设计模式是面向对象编程中的重要概念,它提供了一种标准的、可复用的方法来组织代码,使得软件更易于理解和维护。极客班C++设计模式课件资料集合了网易公开课的相关教育资源,包括PPT演示文稿和一个项目PDF手册,...
创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:...
"C++设计模式精华版"正是这样一个资源,它涵盖了多种在软件开发中常用的设计模式,帮助开发者深入理解并熟练运用这些模式。 设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。创建型模式关注对象的...