Played with BasicItemFactory:
authormishas <mikhail.sobolev@gmail.com>
Fri, 21 Sep 2007 05:58:52 +0000 (05:58 +0000)
committermishas <mikhail.sobolev@gmail.com>
Fri, 21 Sep 2007 05:58:52 +0000 (05:58 +0000)
 * added a virtual destructor (good for abstract classes :))
 * added a method for creating an item using factory name and item's id
 * hid createItem method (as I want it to be used from within BasicItemFactory::create method only)
 * addedd deRegisterFactory method (I'm not sure if it's really needed or how to properly implement it ;(
 * added 'static' to ourFactories definition (fixed a problem)

git-svn-id: file:///svnroot/simple-launcher/trunk@227 3ba93dab-e023-0410-b42a-de7732cf370a

misc/BasicItem.h

index 5c3cca9..037f9b3 100644 (file)
@@ -62,16 +62,22 @@ class BasicItemFactory {
 private:
        BasicItemFactory();
 
+       virtual ~BasicItemFactory();
+
+public:
+       static BasicItem *create(const std::string& factoryName, const std::string& itemID);
+
 public:
        virtual const string::std& factoryName() const = 0;
 
+protected:
        virtual BasicItem *createItem(const std::string&) const = 0;
 
-protected:
        static void registerFactory(const std::string&, BasicItemFactory *);
+       static void deRegisterFactory(const std::string&, BasicItemFactory *);
 
 protected:
-       std::map<std::string, BasicItemFactory *> ourFactories;
+       static std::map<std::string, BasicItemFactory *> ourFactories;
 };
 
 struct BasicItemCollection {