• 设计模式之备忘录


    设计模式之---备忘录

    public class TestClien
     {
      public void Client()
      {
       GameRole L = new GameRole();
       L.InitialState();
       L.ShowState();

       Menmeto m= L.SaveState();

       L.Fight();

       L.ShowState();

       L.RecoveryState(m);

       L.ShowState();

      }
     }

     public class GameRole
     {
      private int vitality;
      private int defense;
      private int attack;
      internal void InitialState()
      {
       vitality = 100;
       defense = 100;
       attack = 100;
      }

      internal void Fight()
      {
       vitality = 0;
       defense = 0;
       attack = 0;
      }

      internal void ShowState()
      {
       Console.WriteLine(this.vitality + this.attack + this.defense);
      }

      internal Menmeto SaveState()
      {
       Menmeto m = new Menmeto();
       m.Attack = this.attack;
       m.Defense = this.defense;
       m.Vitality = this.vitality;
       return m;
      }

      internal void RecoveryState(Menmeto m)
      {
       this.vitality = m.Vitality;
       this.defense = m.Defense;
       this.attack = m.Attack;
      }
     }

     public class Menmeto
     {
      private int vitality;

      public int Vitality
      {
       get { return vitality; }
       set { vitality = value; }
      }
      private int defense;

      public int Defense
      {
       get { return defense; }
       set { defense = value; }
      }
      private int attack;

      public int Attack
      {
       get { return attack; }
       set { attack = value; }
      }
     }

    写完备忘录模式的代码,发现把聚合menmeto的manager类完全省略了,这个模式也能实现。

    它也能解决维护或者记录历史的问题,使得玩家能够还原到前一状态。

  • 相关阅读:
    基于 mockm 的一款 HBuilderX 插件
    css 加载中省略号动画
    定时获取远程文件并存储更新记录
    跨域实例和解决方案
    接口数据总是返回 null 如何回馈和处理
    get 请求中如何携带 body 参数
    看起来像一个 textarea 的 div
    js 高精度运算
    nodejs 服务终端使用 nodemon 运行脚本时实时输出
    解决 vue-cli3 多入口打包 BASE_URL is not defined
  • 原文地址:https://www.cnblogs.com/363546828/p/2241620.html
Copyright © 2020-2023  润新知