• 大小: 8KB
    文件类型: .rar
    金币: 1
    下载: 0 次
    发布日期: 2021-01-05
  • 语言: C/C++
  • 标签: C++  

资源简介

使用单例,工厂,函数指针实现的反射,减少了分支语句,次方法可以动态创建类实例,减少了工厂类里面的分支语句(工厂类完成后基本不需要修改,就可以随意创建想要的类的实例)。

资源截图

代码片段和文件信息

#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\object.cpp

     文件        192  2018-05-10 13:18  RefacterC\RefacterC\object.h

     文件       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


评论

共有 条评论