c#简单工厂设计模式例子,c++ 简单工厂模式

c#简单工厂设计模式例子,c++ 简单工厂模式,C++设计模式之简单工厂模式实例

本文主要介绍C设计模式的工厂方法模式的例子。工厂模式有一个非常生动的描述。建筑对象类就像一个工厂,要建造的对象就是产品。有需要的朋友可以参考一下。

问题描述

之前在公司做了一个windows 8平台的阅读器。首先需要在屏幕上渲染电子书的内容,电子书的每一页都包含各种内容,比如图形、图像、文字等。不同的内容是不同的对象;在屏幕上呈现不同的内容之前,您需要new操作,创建不同的对象,然后在屏幕上绘制它们。这时候就需要大量的新操作。新的操作分布在代码的不同位置,这使得管理起来既麻烦又混乱。说到后期的扩展和维护,有时候,对象太多,开发者不知道这个对象是干什么用的,增加了难度;同时,对于新的操作也会有相应的异常处理。最后,您会发现在代码中,创建了一个新的对象,然后是一段异常处理代码。这时,代码变得极其混乱和臃肿。那我该怎么办呢?我该怎么办?此时,我们需要一个新的类,它专门负责对象的建立和释放。之后对象的各种操作都和这个类无关。这个类专门用于创建对象,它公开了为外部调用创建对象的接口。

模型有非常生动的描述。待建对象的类就像一个工厂,待建对象就是产品。在工厂里加工和使用产品的人并不关心产品是如何生产出来的。从软件开发的角度来看,这有效地降低了模块之间的耦合。

UML类图

对于工厂模型,它可以分为三类:

1.工厂方法模式;

2.工厂方法模式;

3.抽象工厂。

对于以上三个工厂模型,从上到下逐渐抽象,更加通用。这篇博文主要讲的是工厂方法模式,后两个会在后面的博文中总结。

ProductA、ProductB、ProductC继承自Product的虚类,展现方法是不同产品的自我描述;工厂依赖于ProductA、ProductB和ProductC,工厂根据不同的条件创建不同的产品对象。

适用场合

1.在程序中,要创建的对象很多,导致对象的新操作多而复杂,需要使用工厂方法模式;

2.因为我们不需要关心对象的创建过程,而是专注于对象的实际操作,所以需要将对象的创建和操作分开,以便于后期的程序扩展和维护。

代码实现:

/*

**文件名:简单工厂模式

**作者:杰利扬

**日期:2013年11月17日

**描述:更多信息

*/

#包括iostream

#包含矢量

使用命名空间std

typedef枚举ProductTypeTag

{

TypeA,

b型,

USB一种类型的接口

} PRODUCTTYPE

//这里是产品类

类别产品

{

公共:

虚拟void Show()=0;

};

a类产品:公共产品

{

公共:

无效显示()

{

cout 'I 'm ProductA 'endl

}

};

b类产品:公共产品

{

公共:

无效显示()

{

cout ' I ' m product b ' endl;

}

};

产品c类:公共产品

{

公共:

无效显示()

{

cout 'I 'm ProductC 'endl

}

};

//这里是工厂类

类工厂

{

公共:

产品*创建产品(产品类型类型)

{

开关(类型)

{

案例类型a:

返回新的ProductA();

案例类型b:

返回新的ProductB();

案例类型c:

返回新的product c();

默认值:

返回NULL

}

}

};

int main(int argc,char *argv[])

{

//首先,创建一个工厂对象

Factory * product Factory=new Factory();

product * producto bja=product factory-create product(type a);

if (productObjA!=空)

product obja-Show();

product * productObjB=product factory-create product(type b);

if (productObjB!=空)

productObjB-Show();

product * product objc=产品工厂-创建产品(type c);

if(产品obj!=空)

producto bjc-show();

删除产品工厂:

ProductFactory=NULL:

删除产品对象:

productobja=null:

删除productObjB:

productobjb=null

删除产品目标:

productObjC=NULL:

返回0;

}

郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。

相关文章阅读

  • 设计一个简单的C#控制台应用程序,C#控制台程序,C# 创建控制台应用程序
  • 深入解析windows第8版,深入解析C#(第4版)
  • 数组代码,c# 数组操作,C# 数组实例介绍(图文)
  • 学会C#要多久,学会c#要多久,c#学习之30分钟学会XAML
  • 回溯法01背包问题c,回溯法求解01背包问题伪代码,C#使用回溯法解决背包问题实例分析
  • xml文件转义字符,xml转意字符,C# XML中的转义字符操作
  • winform 进度条控件,c# 进度条使用
  • winform 进度条控件,c# 进度条使用,C#使用winform实现进度条效果
  • winform backgroundworker,c# isbackground
  • winform backgroundworker,c# isbackground,C# BackgroundWorker用法详解
  • lua与c#交互,lua c#
  • lua与c#交互,lua c#,ToLua框架下C#与Lua代码的互调操作
  • linq c#,linq原理 c#
  • linq c#,linq原理 c#,c#中LINQ的基本用法实例
  • java decimal保留两位小数,sql中decimal函数保留2位小数,C#中decimal保留2位有效小数的实现方法
  • 留言与评论(共有 条评论)
       
    验证码: