zoukankan      html  css  js  c++  java
  • 设计模式之备忘录

    设计模式之---备忘录

    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类完全省略了,这个模式也能实现。

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

  • 相关阅读:
    Python包中__init__.py作用
    获取web页面xpath
    Selenium学习(Python)
    C++构造函数的选择
    分布式实时处理系统——C++高性能编程
    构建之法(邹欣)
    分布式实时处理系统——通信基础
    go语言-csp模型-并发通道
    redis.conf 配置说明
    Linux fork()一个进程内核态的变化
  • 原文地址:https://www.cnblogs.com/363546828/p/2241620.html
Copyright © 2011-2022 走看看