Singleton
by psoares
HTML
<link rel="stylesheet" href="http://ajax.googleapis.com/ajax/libs/dojo/1.9.0/dijit/themes/claro/claro.css">
JavaScript
define("showcase/modules/SingletonScope", [
"dojo/_base/declare"], function (declare) {
var instance;
var Singleton = declare(null, {
constructor: function () {
console.debug("singleton-scoped object constructor");
}
});
Singleton.getInstance = function () {
if (!instance) {
instance = new Singleton();
return instance;
}
};
return Singleton;
});
define("showcase/modules/PrototypeScope", [
"dojo/_base/declare"], function (declare) {
var Prototype = declare(null, {
constructor: function () {
console.debug("prototype-scoped object constructor");
}
});
Prototype.getInstance = function () {
return new Prototype();
};
return Prototype;
});
define("showcase/modules/ScopedObject", ["dojo/_base/declare"], function (declare) {
console.log('** module ** initialization');
var ScopedObject = declare(null, {
items: [],
constructor: function () {
this.inherited(arguments);
},
getItems: function () {
return this.items
},
setItems: function (newItems) {
this.items = newItems
},
addItem: function (item) {
this.items.push(item)
}
});
ScopedObject.getInstance = function(){
this.inherited(arguments);
};
return ScopedObject;
});
require([
"dojo/_base/declare",
"showcase/modules/SingletonScope",
"showcase/modules/ScopedObject"], function (declare, Scope, ScopedObject) {
var SingletonClass = declare([ScopedObject, Scope], {});
debugger;
var singletonObj = SingletonClass.getInstance();
debugger;
singletonObj.addItem('item1')
console.log(singletonObj.getItems())
});
/*require(["dojo/_base/declare",
"showcase/modules/SingletonScope",
"showcase/modules/ScopedObject"], function (declare, Scope, ScopedObject) {
var...