我一直在開發這個類,以應用程序的共享對象的形式加載插件。我目前想到了兩種加載應用程序加載的所有插件的文件名的方法。我寫了一個加載文件名的界面。我有幾個關於如何改進這種設計的問題。請幫忙。謝謝。共享對象加載器的設計問題
編輯:每個反饋的代碼更改:D。
#include "Plugin.h"
//This class is an interface for loading the list of file names of shared objects.
//Could be by loading all filienames in a dir, or by loading filenames specified in a file.
class FileNameLoader
{
public:
virtual std::list<std::string>& LoadFileNames() = 0;
};
class PluginLoader
{
public:
explicit PluginLoader(LoadingMethod, const std::string& = "");
virtual ~PluginLoader();
virtual bool Load();
virtual bool LoadPlugins(FileNameLoader&);
virtual bool LoadFunctions();
protected:
private:
explicit PluginLoader(const PluginLoader&);
PluginLoader& operator=(const PluginLoader&);
bool LoadSharedObjects();
list<std::string> l_FileNames;
list<PluginFunction*> l_Functions;
list<Plugin*> l_Plugins;
};
任何似乎很醜陋的東西仍然?無論如何感謝您的反饋。
聽起來可能是時候申請[YAGNI](http://en.wikipedia.org/wiki/You_ain't_gonna_need_it):) – sje397 2010-10-12 10:33:09
除了上面你可以緩存你的插件數據爲'std :: unordered_map>' –
erjot
2010-10-12 10:34:31