设计模式学习笔记--简单工厂模式
2015-06-06 22:53
281 查看
背景:
在开发过程中,经常会创建大量的对象,创建对象后还会涉及到一系列的初始化操作,而我们也不一定会只是在创建对象之后马上就使用对象,而且如果初始化操作很复杂,代码看起来就会非常杂乱,如果有变动,所有的初始化操作都要进行修改,相当难以维护。功能:
将对象的创建和使用分离开来,专门用于创建对象并初始化。并且进行扩展后,可以根据参数不同,创建不同的对象。例子:
// 设计模式Demo.cpp : 定义控制台应用程序的入口点。 // #include "stdafx.h" #include <iostream> #include <string> using namespace std; //被创建的对象基类 class Product { protected: int num; string name; public: void setNum(int n) { num = n; } void setName(string na) { name = na; } virtual void show() = 0; }; //子类1 class Product1 : public Product { void show() { cout<<"Product1 num: "<<num<<" name: "<<name<<endl; } }; //子类2 class Product2 : public Product { void show() { cout<<"Product2 num: "<<num<<" name: "<<name<<endl; } }; //简单工厂类 class SimpleFactory { public: static Product* GetProduct(int kind, int num, string name) { switch (kind) { case 1: { Product* product = new Product1(); product->setNum(num); product->setName(name); return product; } case 2: { Product* product = new Product2(); product->setNum(num); product->setName(name); return product; } default: return NULL; } } }; int _tmain(int argc, _TCHAR* argv[]) { SimpleFactory factory; Product* product = factory.GetProduct(1, 0, "hehe"); product->show(); product = factory.GetProduct(2, 1, "haha"); product->show(); getchar(); return 0; }
结果:
Product1 num: 0 name: heheProduct2 num: 1 name: haha
可见,使用了简单工厂模式之后,创建一个对象的代码变得十分简洁,修改时仅需要在工厂类内部进行一些修改,而不需要像原来一样,每次创建对象的地方都要进行修改。大大的增加了代码的简洁性。
相关文章推荐
- 女神领军!科技界将迎女性发力潮
- 输入输出--数值转换为字符串
- 理解了DirectShow播放原理
- tableView表头表尾属性
- ubuntu在线音乐播放器
- helloworld
- CentOS7下通过rpm方式安装MySQL及插入中文问题解决 [原创]
- IE6 跟随滚动解决方法
- 黑马程序员————List集合概述、Arrayist集合、Vector集合、LinkedList集合简述
- java实现杨辉三角
- 在TStatusBar状态栏上自绘防闪烁
- 算法之最大连续子序列之和之变形题目
- 新博第一天
- delphi中如何实现模糊查找文件
- [写代码]解析自定义数据库文件的思路
- Java小记(3 )
- 对Java类加载、实例化执行过程的理解
- hdu 2079 选课时间(题目已修改,注意读题) (母函数)
- Linux常用命令-权限管理命令-权限管理命令chmod
- #UITable代理#