这是一种优化性能代码的模式,最适合解决因创建大量类似对象而累及性能的问题。对于那些可能一连几天也不会重新加载的大型应用系统非常有用。它用于减少应用程序所需要数量,通过将对象内部划分为内在数据和外在数据两类来实现。
管理享元外在数据有许多方法:1、数据库;2、组合模式(利用对象自身的层次关系保存数据并达到共享的目的)。这种优化的一步步骤如下:
- 将所有外在数据从目标类中剥离,尽可能多地删除此类的改改。
- 创建一个用来控制此类的实例化的工厂类。这个工厂应该掌握该类所有创建出来的独一无二的实例。具体做法就是用一个对象字面量来保存每一个这类对象的引用。另一种做法是创建一个对象池。
- 创建一个用来保存外在数据的管理器,负责控制处理外在数据的种种事宜。
var Tooltip = function() {
this.delayTimeout = null;
this.delay = 1500; // in milliseconds.
// Create the HTML.
this.element = document.createElement('div');
document.getElementsByTagName('body')[0].appendChild(this.element);
};
Tooltip.prototype = {
startDelay: function(e, text) {
},
show: function(x, y, text) {
},
hide: function() {
}
};
var TooltipManager = (function() {
var storedInstance = null;
var Tooltip = function() {
};
Tooltip.prototype = {
};
return {
addTooltip: function(targetElement, text) {
var tt = this.getTooltip();
addEvent(targetElement, 'mouseover', function(e) { tt.startDelay(e, text); });
addEvent(targetElement, 'mouseout', function(e) { tt.hide(); });
},
getTooltip: function() {
if(storedInstance == null) {
storedInstance = new Tooltip();
}
return storedInstance;
}
};
})();
TooltipManager.addTooltip($('link-id'), 'Lorem ipsum...');
标签:享元,function,text,storedInstance,javascript,Tooltip,var,设计模式,tt
From: https://blog.51cto.com/arch/6353444