灏天阁

备忘录模式

· Yin灏
/**
 * 备忘录模式
 * 在不破坏对象的封装性的前提下,在对象之外捕获并保存该对象内部的状态以便日后对象使用或者对象恢复到以前的某个状态。
 */

// 新闻缓存器
// Page 备忘录类
var Page = function () {
  // 信息缓存对象
  var cache = {};
  /**
   * page: 页码
   * fn: 成功的回调函数
   */
  return function (page, fn) {
    // 判断该页数据是否在缓存中
    if (cache[page]) {
      // 恢复到该页状态,显示该页内容
      showPage(page, cache[page]);
      // 执行成功回调函数
      fn && fn();
    } else {
      $.post(
        "./data/getNewsData.php",
        {
          page: page,
        },
        function (res) {
          if (res.errNo == 0) {
            showPage(page, res.data);
            cache[page] = res.data;
            fn && fn();
          } else {
            // 处理异常
          }
        }
      );
    }
  };
};

// 测试用例
$("#next_page").click(function () {
  var $news = $("#news_content"),
    page = $news.data("page");
  Page(page, function () {
    $news.data("page", page + 1);
  });
});

- Book Lists -