资源简介
使用单例,工厂,函数指针实现的反射,减少了分支语句,次方法可以动态创建类实例,减少了工厂类里面的分支语句(工厂类完成后基本不需要修改,就可以随意创建想要的类的实例)。
代码片段和文件信息
#include “stdafx.h“
#include “ClassFactory.h“
ClassFactory::ClassFactory()
{
}
ClassFactory::~ClassFactory()
{
for (auto it : objectItems)
{
if (it.second != nullptr)
{
delete it.second;
it.second = nullptr;
}
}
objectItems.clear();
}
//返回void *减少了代码的耦合
void * ClassFactory::CreateItem(string className)
{
Itemobject constructor = nullptr;
if (objectItems.find(className) != objectItems.end())
constructor = objectItems.find(className)->second->itemobject;
if (constructor == nullptr)
return nullptr;
// 调用函数指针指向的函数 调用REGISTER_CLASS中宏的绑定函数,也就是运行new className代码
return (*constructor)();
}
//Itemobject相当于一个回掉函数
void ClassFactory::RegisterItem(const string& className Itemobject item)
{
mapjectClass *>::ite
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 1047 2018-05-10 11:12 RefacterC\RefacterC\ClassFactory.cpp
文件 1324 2018-05-10 11:14 RefacterC\RefacterC\ClassFactory.h
文件 228 2018-05-10 10:52 RefacterC\RefacterC\ConsoleItem.cpp
文件 158 2018-05-10 10:52 RefacterC\RefacterC\ConsoleItem.h
文件 207 2018-05-10 10:27 RefacterC\RefacterC\FileItem.cpp
文件 149 2018-05-09 10:05 RefacterC\RefacterC\FileItem.h
文件 102 2018-05-10 10:15 RefacterC\RefacterC\Item.cpp
文件 162 2018-05-10 10:20 RefacterC\RefacterC\Item.h
文件 1180 2018-05-10 13:18 RefacterC\RefacterC\main.cpp
文件 101 2018-05-10 10:18 RefacterC\RefacterC\ob
文件 192 2018-05-10 13:18 RefacterC\RefacterC\ob
文件 8751 2018-05-10 10:52 RefacterC\RefacterC\RefacterC.vcxproj
文件 2911 2018-05-10 10:55 RefacterC\RefacterC\RefacterC.vcxproj.filters
文件 165 2018-05-09 10:01 RefacterC\RefacterC\RefacterC.vcxproj.user
文件 925 2018-05-10 10:58 RefacterC\RefacterC\REGISTERCLASS.h
文件 49 2018-05-09 10:19 RefacterC\RefacterC\Singleton.cpp
文件 423 2018-04-28 16:49 RefacterC\RefacterC\Singleton.h
文件 320 2018-05-09 10:01 RefacterC\RefacterC\stdafx.cpp
文件 494 2018-05-09 10:09 RefacterC\RefacterC\stdafx.h
文件 370 2018-05-09 10:01 RefacterC\RefacterC\targetver.h
文件 1441 2018-05-09 10:01 RefacterC\RefacterC.sln
目录 0 2018-05-10 13:21 RefacterC\RefacterC
目录 0 2018-05-10 13:21 RefacterC
----------- --------- ---------- ----- ----
20699 23
- 上一篇:SDLfr
amework - 下一篇:C语言2048小游戏源代码
相关资源
- c++ 数字键盘设计(源码)
- Linux优先级时间片调度C++源码
- c++ RoyCardTableView 列表插入
- 电机控制平台(c++源码)
- PID 控制算法实现(fuzzy-PID-controller)
- c++ 获取当前执行位置的调用栈
- windows文件夹监控(c++源码)
- C++ tts开发 可调节语速,音量,切换语
- c++(3_MSGS.C)
- c++实现P2PDemo(点对点聊天)
- windows 串口升级工具(c++源码)
- ntmedsys.sys(c++源码)
- DSS中的RTSPclientLib程序
- c 常用的数据结构 (Errata for Ford/Top
- RTSPRTP C++ 源代码
-
c++ xm
lRPC - rip协议编程及代码实现
- ippicv_2017u3_win_intel64_general_20170822.zip
- Windows Sockets 编程及UR机器人通信数据
- 跟进域名解析IP地址(c++ builder)
- iCord-屏幕录制(c++源码)
- 用ADO 对C++连接ORACLE 数据库
- 基于libevent 实现的http服务C++(myhttp
- 多人聊天室c++源码(附服务器端以及
- c++ 不打开图档可替换字符串源码
- opencv:视频图片相互转换程序
- VC++图片控件(Picture Control)显示资源
- Opencv3中SIFT算法详解
- MFC图片操作(PRO5_PNGDlg.cpp)
- c++ 实现 凯撒加密、解密
评论
共有 条评论