当前位置: 首页 > news >正文

设计模式-命令模式

概述

命令模式也是一种行为型设计模式其主要目的是将发送者和接受者解耦,发送者不需要知道接受者具体的内容,只需要发送出命令就行,调用对应的方法。其中主要的组成部分是,命令接口,具体的各种命令,命令发送者,命令接受者,发送者发送具体的命令给接受者,接受者处理对应的逻辑,举例如下


例子:在常见得2D游戏中,玩家常见的操作有前进后退跳跃的命令,实现这个玩家控制器。

命令模式

using System.Numerics;internal class Program
{private static void Main(string[] args){Player player = new Player();//创建玩家ICommand forword = new Forward(player);//创建玩家操作ICommand retreat = new Retreat(player);ICommand jump = new Jump(player);PlayerControl playerControl = new PlayerControl();//创建玩家控制器playerControl.PlayerCommand(forword);//前进命名playerControl.Execute();playerControl.PlayerCommand(retreat);//后退命令playerControl.Execute();}public interface ICommand//命令接口{void Operate();}public class Forward : ICommand//前进操作{private readonly Player _player;public Forward(Player player){_player = player;}public void Operate(){_player.PlayerForword();}}public class Retreat : ICommand//后退操作{private readonly Player _player;public Retreat(Player player){_player = player;}public void Operate(){_player.PlayerRetreat();}}public class Jump : ICommand//跳跃操作{private readonly Player _player;public Jump(Player player){_player = player;}public void Operate(){_player.PlayerJump();}}public class Player//玩家{public void PlayerForword(){Console.WriteLine("Player Forword Operate!");}public void PlayerRetreat(){Console.WriteLine("Player Retreat Operate!");}public void PlayerJump(){Console.WriteLine("Player Jump Operate!");}}public class PlayerControl//玩家控制器{private ICommand _command;public void PlayerCommand(ICommand command){_command = command;}public void Execute(){_command.Operate();}}
}

执行结果

Player Forword Operate!
Player Retreat Operate!


http://www.mrgr.cn/news/7808.html

相关文章:

  • 【大数据算法】一文掌握大数据算法之:时间亚线性算法。
  • 获取阿里云Docker镜像加速器地址
  • Linux(CentOS7)虚拟机安装教程
  • Appium学习
  • Redis:Redis为什么快
  • 若依/vue2引入threejs展示glb/gltf模型,以及画布截图功能
  • 如何选择需求跟踪管理软件?8款优质推荐
  • 数据结构-栈与队列-数组和链表的推广运用-第六天
  • 云计算实训33——高并发负载均衡项目(eleme)
  • ​14:00面试,14:06就出来了,问的问题有点变态。。。
  • Pytorch cat()与stack()函数详解
  • 嵌入式学习(网络通信UDP\TCP)
  • iOS工程:获取手机相册权限,iOS原生系统弹窗, Privacy隐私政策选择,如何添加系统弹出并修改描述文字
  • 如何在 Ubuntu 系统中安装PyCharm集成开发环境?
  • 当前A股平均市盈率
  • 回调函数的使用
  • 如何使用ssm实现公司项目管理系统设计与实现
  • (第三期)书生大模型实战营——OpenXLab部署InternLM2实践——上传模型
  • Vue.js实战教程:如何一步步构建HSK在线学习平台
  • API 的多版本管理,如何在 Apifox 中操作?