資源簡介
使用單例,工廠,函數(shù)指針實(shí)現(xiàn)的反射,減少了分支語句,次方法可以動(dòng)態(tài)創(chuàng)建類實(shí)例,減少了工廠類里面的分支語句(工廠類完成后基本不需要修改,就可以隨意創(chuàng)建想要的類的實(shí)例)。
代碼片段和文件信息
#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;
//?調(diào)用函數(shù)指針指向的函數(shù)?調(diào)用REGISTER_CLASS中宏的綁定函數(shù),也就是運(yùn)行new?className代碼
return?(*constructor)();
}
//Itemobject相當(dāng)于一個(gè)回掉函數(shù)
void?ClassFactory::RegisterItem(const?string&?className?Itemobject?item)
{
mapjectClass?*>::ite
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????文件???????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小游戲源代碼
評(píng)論
共有 條評(píng)論