0
点赞
收藏
分享

微信扫一扫

javascript设计模式-享元

这是一种优化性能代码的模式,最适合解决因创建大量类似对象而累及性能的问题。对于那些可能一连几天也不会重新加载的大型应用系统非常有用。它用于减少应用程序所需要数量,通过将对象内部划分为内在数据和外在数据两类来实现。

管理享元外在数据有许多方法: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...');

举报

相关推荐

0 条评论