資源簡介
使用單例,工廠,函數指針實現的反射,減少了分支語句,次方法可以動態創建類實例,減少了工廠類里面的分支語句(工廠類完成后基本不需要修改,就可以隨意創建想要的類的實例)。
代碼片段和文件信息
#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小游戲源代碼
評論
共有 條評論