`
Riddick
  • 浏览: 642284 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

C++设计模式之简单工厂模式

阅读更多

 

      专门定义一个类来负责创建其他类的实例,被创建的实例通常都具有共同的父类。它又称为静态工厂方法模式,属于类的创建型模式。

  简单工厂模式的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++设计模式-工厂方法模式

    在标题“c++设计模式-工厂方法模式”中,我们关注的是如何在C++中实现工厂方法这一设计模式。工厂方法模式的核心思想是定义一个创建对象的接口,但让子类决定实例化哪一个类。这样,工厂方法可以使类的实例化过程...

    c++ 设计模式 简单工厂模式

    简单工厂模式: 具体实现了一个计算器的代码,首先计算器应该具备对两个数字进行运算的功能,而运算的方法可以有很多种(最基础的有加,减,乘,除), 并且代码易于移植,这里是个console的应用台界面,也应该可以...

    设计模式(简单工厂和工厂方法C++版)Demo程序

    本Demo程序主要涵盖了两种常用的创建型设计模式——简单工厂模式(Simple Factory)和工厂方法模式(Factory Method)。这两种模式都是用来创建对象,但它们在灵活性和抽象程度上有所不同。 简单工厂模式是一种静态...

    C++制作的简单工厂模式计算器

    在软件设计模式中,简单工厂模式是一种常用的创建型模式,它提供了一个创建对象的接口,但允许子类决定实例化哪一个类。在这个案例中,"C++制作的简单工厂模式计算器"就是一个运用了简单工厂模式来构建计算器程序的...

    C++ 设计模式:简单工厂、工厂方法、抽象工厂练习代码

    本主题聚焦于C++中的三个工厂模式:简单工厂、工厂方法和抽象工厂。这些模式都围绕着对象的创建过程,旨在提高代码的灵活性、可读性和可维护性。 1. **简单工厂模式**: - 简单工厂模式是一种静态工厂方法,它提供...

    C++设计模式例程,工厂模式例子

    C++设计模式例程,工厂模式例子,环境是VS2019打开即可运行 工厂模式也是平时我们编程用的比较多的一种行为设计模式,它提供了一种创建对象的最佳方式。工厂模式提供了一种创建对象的方式,而无需指定要创建的具体...

    C++设计模式之简单工厂模式实例

    简单工厂模式是一种设计模式,它将对象的创建过程封装在一个单独的工厂类中,使得客户端无需知道具体的对象创建逻辑,只需通过工厂类提供的接口来获取所需对象。这种模式有助于降低系统的耦合度,提高可扩展性和可...

    c++设计模式之一(工厂模式)

    设计模式之语言c++版(工厂模式)本人结合实际工作加上参阅GoF+23种设计解析附C++实现一书。详细请进http://blog.csdn.net/m_x_c/article/details/8156555

    C++设计模式--基于Qt4开源跨平台开发框架

    《C++设计模式--基于Qt4开源跨平台开发框架》一书主要探讨了如何在C++编程中利用设计模式,并结合Qt4框架进行高效的跨平台应用开发。设计模式是软件工程中的重要概念,它们是经过时间和实践验证的解决特定问题的模板...

    C++的设计模式之工厂方法模式(Factory Method)

    C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method) C++的设计模式之工厂方法模式(Factory Method)

    C++设计模式-工厂和单例

    本篇将深入探讨两种重要的设计模式:工厂模式和单例模式,以及如何在VC(Visual C++)环境下实现它们。 ### 工厂模式 **定义**:工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,当...

    18种C++版设计模式

    工厂,状态,观察者等18种设计模式 每一种设计模式有详细介绍,代码(C++),UML图工厂,状态,观察者等18种设计模式 每一种设计模式有详细介绍,代码(C++),UML图工厂,状态,观察者等18种设计模式 每一种设计...

    设计模式详解及c++代码实现

    本文将详细解析23种经典的设计模式,并结合C++语言在Visual C++ 6.0环境下进行代码实现。我们将探讨抽象工厂(Abstract Factory)、装饰者(Decorator)和工厂方法(Factory Method)这三种重要的设计模式。 首先,...

    23种设计模式(C++).pdf

    《设计模式精解-GoF 23 种设计模式解析附 C++实现源码》是一本深入探讨软件设计模式的书籍,它涵盖了创建型、结构型和行为型三种主要类型的23个经典设计模式,并提供了C++语言的实现代码。设计模式是软件工程中的...

    设计模式_简单工厂模式

    简单工厂模式是软件设计模式中的一种基础模式,它属于创建型模式,主要用来解决对象创建的问题。这个模式的核心思想是将对象的创建过程封装到一个单独的类中,也就是所谓的“工厂”类,使得客户端代码在使用时无须...

    极客班C++设计模式课件资料.zip

    C++设计模式是面向对象编程中的重要概念,它提供了一种标准的、可复用的方法来组织代码,使得软件更易于理解和维护。极客班C++设计模式课件资料集合了网易公开课的相关教育资源,包括PPT演示文稿和一个项目PDF手册,...

    设计模式-C++

    创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。 结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 行为型模式,共十一种:...

    C++设计模式精华版

    "C++设计模式精华版"正是这样一个资源,它涵盖了多种在软件开发中常用的设计模式,帮助开发者深入理解并熟练运用这些模式。 设计模式可以分为三大类:创建型模式、结构型模式和行为型模式。创建型模式关注对象的...

Global site tag (gtag.js) - Google Analytics