@H_403_0@运用共享技术有效地支持大量的细粒度的对象,避免对象间拥有相同内容造成多余的开销。
享元模式主要是对其数据、方法共享分离,将数据和方法分成内部数据、内部方法和外部数据、外部方法。内部方法与内部数据指的是相似或共有的数据和方法,所以将其提取出来减少开销。
<div class="jb51code">
<pre class="brush:js;">
var Flyweight = function() {
// 已创建的元素
var created = [];
// 创建一个新闻包装容器
function create() {
var dom = document.createElement('div');
// 将容器插入新闻列表容器中
document.getElementById('container').appendChild(dom);
// 缓存新创建的元素
created.push(dom);
// 返回创建的新元素
return dom;
}
return {
// 获取创建新闻元素方法
getDiv: function() {
// 如果已创建的元素小于当前页元素总个数(5个),则创建
if(created.length < 5) {
return created();
} else {
// 获取第一个元素,并插入去后面
var div = created.shift();
created.push(div);
return div;
}
}
}
}