命令模式
对命令模式的理解
我的理解就是:将抽象出来的概念转化为数据。即抽象出来的概念存放在变量中。
香蕉、苹果最终抽象为水果,而我们将水果放在变量中。
配置映射输入
有四个按钮,当玩家按下时需要触发不同的功能。
它的代码逻辑
public class InputHandler{
public void HandleInput(){
if(按下X) Jump();
else if(按下Y) Fire_Gun();
else if(按下A) Swap_Weapon();
else if(按下B) Lurch();
}
}
这个函数通常需要每帧都会调用。
现在有一个需求:我可以自定义设置按下某个某个按钮需要做什么,这个取决于玩家的设置。比如说我想要设置按下A,需要开枪,按下X,切换武器。
这又会怎么去实现呢?
将跳跃、开枪、切换武器、潜行这些行为封装成一个又一个的类,然后用变量去存储类。
做一个基类去控制这些行为的调用。
public class Command{
public Command(){}
public virtual void execute() {}
}
public class JumpCommand:Command{
public override void execute(){
// 跳跃逻辑
}
}
public class FireGunCommand:Command{
public override void execute(){
// 开枪逻辑
}
}
public class SwapWeaponCommand:Command{
public override void execute(){
// 切换武器逻辑
}
}
public class LurchCommand:Command{
public override void execute(){
// 潜行逻辑
}
}
在代码处理的时候,用变量去存储这些逻辑
public class InputHandler{
Command ButtonX_;
Command ButtonY_;
Command ButtonA_;
Command ButtonB_;
public void HandleInput(){
if(按下ButtonX_) ButtonX_.execute;
else if(按下ButtonY_) ButtonY_.execute;
else if(按下ButtonA_) ButtonA_.execute;
else if(按下ButtonB_) ButtonB_.execute;
}
}
评论区