I realised the problem is completely different, because of my
implementation of Singleton, the Factory is not saved/cached in the GLOBAL
variable (which all required() variables usually are, it seems). So my
guess now it has to do with my implementation of the Singleton pattern:
var PluginFactory = (function() {
/**
* Actual implementation of the class.
* This is encapsulated because the class is a singleton.
*/
function PluginFactory() {
// Implementation using prototype functions
}
/**
* This variable holds the singleton instance of the factory class.
*/
var instance = null;
function initialize() {
console.log("PluginFactory initialized");
}
/**
* This method returns a singleton instance of the factory.
*/
return {
getInstance: function() {
if (instance === null) {
// Create a new instance and hide its constructor
instance = new PluginFactory();
instance.constructor = null;
initialize();
}
return instance;
}
};
})();
// Export a singleton instance of the PluginFactory
exports.PluginFactory = PluginFactory.getInstance();
Any thoughts why this implementation isn't handled like i expect?
Op dinsdag 25 maart 2014 13:50:27 UTC+1 schreef [email protected]:
>
> Hi,
>
> So i'm having problems with my architecture of my node application, I know
> the problem, I'm just trying to find the best solution.
>
> My problems is exactly the same as:
> https://groups.google.com/forum/#!topic/nodejs/u_9IE2z_6rM
>
> Only I'm using a Factory class to create plugins of the type "IPlugin".
> These plugins have certain actions, called PluginAction.
>
> A PluginAction has a field plugin, which refers to its parent plugin. When
> serializing to JSON, i replace the plugin object with a string identifier,
> pointing to the correct plugin.
>
> My PluginFactory can retrieve a plugin using retrieve(identifier). The
> problem occurs when I try to deserialize a given PluginAction.
>
> At that point I would like to convert the plugin identifier back to the
> plugin object, by retrieving it from the Factory. This is where it goes
> wrong.
>
> I understand this could be a bit hard to follow, so I've included a part
> of my class diagram, which might clarify it more. Short summary:
>
>
> 1. PluginFactory.initialize() loads all plugins in a certain directory
> using require()
> 2. PluginAction.toJSON() changes the plugin object to a string
> containing the plugin identifier
> 3. PluginAction.fromJSON() when trying to retrieve the plugin object
> using the PluginFactory, I cannot load the PluginFactory file.
>
>
--
--
Job Board: http://jobs.nodejs.org/
Posting guidelines:
https://github.com/joyent/node/wiki/Mailing-List-Posting-Guidelines
You received this message because you are subscribed to the Google
Groups "nodejs" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/nodejs?hl=en?hl=en
---
You received this message because you are subscribed to the Google Groups
"nodejs" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.