JS 디자인 패턴의 구조적 플라이웨이트 패턴에 대한 간략한 소개

巴扎黑
풀어 주다: 2017-09-02 13:41:35
원래의
1352명이 탐색했습니다.

이 글은 주로 js 디자인 패턴의 구조적 플라이웨이트 패턴 관련 정보를 자세히 소개합니다. 관심 있는 친구들이 참고할 수 있습니다.

공유 기술을 사용하여 많은 수의 세분화된 객체를 효과적으로 지원하세요. 객체 간에 동일한 내용을 가짐으로써 발생하는 불필요한 오버헤드.
플라이웨이트 모델은 주로 데이터와 방법의 공유를 분리하여 데이터와 방법을 내부 데이터, 내부 방법 및 외부 데이터와 외부 방법으로 구분합니다. 내부 메소드 및 내부 데이터는 유사하거나 공유되는 데이터 및 메소드를 참조하므로 이를 추출하여 오버헤드를 줄입니다.


var Flyweight = function() {
 // 已创建的元素
 var created = [];
 // 创建一个新闻包装容器
 function create() {
  var dom = document.createElement('p');
  // 将容器插入新闻列表容器中
  document.getElementById('container').appendChild(dom);
  // 缓存新创建的元素
  created.push(dom);
  // 返回创建的新元素
  return dom;
 }
 return {
  // 获取创建新闻元素方法
  getp: function() {
   // 如果已创建的元素小于当前页元素总个数(5个),则创建
   if(created.length < 5) {
    return created();
   } else {
    // 获取第一个元素,并插入去后面
    var p = created.shift();
    created.push(p);
    return p;
   }
  }
 }
}
로그인 후 복사

위에서 플라이급 클래스를 생성했습니다. 각 페이지에는 5개의 뉴스 항목만 표시할 수 있으므로 5개의 요소가 생성되어 플라이급 클래스 내에 저장됩니다. 생성된 요소는 getp 메서드를 통해 얻을 수 있습니다. 다음으로 외부 데이터와 외부 메소드를 구현해야 합니다. 외부 데이터는 우리가 표시하려는 모든 뉴스 콘텐츠이므로 공유할 수 없습니다.


var paper = 0,
  num = 5,
  len = article.length;
// 添加五条新闻
for(var i = 0; i < 5; i++) {
 if(article[i])
 // 通过享元类获取创建的元素并写入新闻内容
 Flyweight.getp().innerHTML = article[i];
}
로그인 후 복사


// 下一页按钮绑定事件
document.getElementById(&#39;next_page&#39;).onclick = function() {
 // 如果新闻内容不足5条则返回
 if(article.length < 5) {
  return;
 }
 var n = ++paper * num % len, // 获取当前页的第一条新闻索引
   j = 0;
 // 插入5条新闻
 for(; j < 5; j++) {
  // 如果存在n+j条则插入
  if(article[n + j]) {
   Flyweight.getp().innerHTML = article[n + j];
  // 否则插入起始位置第n+j-len条
  } else if(article[n + j - len]) {
   Flyweight.getp().innerHTML = article[n + j - len];
  } else {
   Flyweight.getp().innerHTML = "";
  }
 }
}
로그인 후 복사


이렇게 하면 플라이웨이트 모드를 사용하여 페이지를 재구성한 후 각 작업마다 5개 요소만 작업하면 되므로 성능이 많이 향상될 수 있습니다.
플라이웨이트 모드의 적용은 프로그램의 실행 효율성과 시스템 성능을 향상시키기 위한 것입니다. 따라서 프로그램 내 데이터 중복을 피하기 위해 대규모 시스템 개발에 널리 사용됩니다. 적용 시 내부 상태와 외부 상태를 정확하게 파악해야 보다 합리적으로 추출하고 분리할 수 있습니다.

위 내용은 JS 디자인 패턴의 구조적 플라이웨이트 패턴에 대한 간략한 소개의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!