zoukankan      html  css  js  c++  java
  • gof-命令模式入门解读

    命令模式:将回调方法对象化

    应用场景:规范回调方式,调用方式 比如MVC中的观察者回调皆为命令对象

    谈一点小经验:

    在设计命令时将命令中参数尽可能的放在构造中传入 避免出现 void Execute(params T)这种尴尬局面

    在一些动态语言中可以使用的闭包的 一个最外层的upvalue直接当作一个命令对象使用 但是当闭包内方法过于复杂时还是封装为具体的命令对象比较简洁

    有些不用记录状态的命令可以实例一次无限复用 比如推箱子 方向移动一条命令不需要记录状态 而有些具有撤销操作的命令需要记录这条命令的状态 方便做撤销操作

    public interface ICommand {
        void Execute();
        void Execute(PlayerActor actor);  //<-尽量不要出现在命令中传参这种局面  命令中枢非常难运维
    }
    
    public class HideCommand : ICommand
    {
        HideCommand(GameObject obj,Transform pos) {//<-一条命令的参数在这里传入
    
        }
        public void Execute()
        {
            throw new System.NotImplementedException();
        }
    
        public void Execute(PlayerActor actor)//<-错误示范
        {
            throw new System.NotImplementedException();
        }
    }

    为什么说闭包机制适合作为命令   可以看到 upvalue就是一个可以记录内部操作和内部数据的容器  天然的命令条例哈哈 lua例子:

    function foo ()
      local a, b, c, d
      local f1 = function () return d + b end
      local f2 = function () return f1() + a end
      return f1,f2
    end 
  • 相关阅读:
    redis配置认证密码以及远程访问
    Mybatis缓存配置
    Node.Js安装
    1.ArcGis几何图形之几何计算
    MessagePack 新型序列化反序列化方案
    Redis(六)-数据类型
    Redis(五)-数据库
    Redis(四)-配置
    Redis(三)-Ubuntu下安装
    Redis(二)-Win系统下安装
  • 原文地址:https://www.cnblogs.com/chenggg/p/11329611.html
Copyright © 2011-2022 走看看