命令模式
1 嗯,,耗了很多时间在这里,其实也没多复杂,就是不太清楚目的。总的来说是这样的:有一个命令基类,然后其他的命令继承,继承的命令里面会存一个主体,然后命令的基类方法的实现是依靠存入的主体去实现。
2 我们常规的处理命令的思路是,一个命令基类,然后继承命令去分别添加不同命令。命令模式的思路是,继承的命令不直接重写命令方法,而是由存入的类去重写命令方法。隔了一层,所以所谓的解耦,都是要多一层
以上结构来实现吗~
3 想了一下,还是觉得奇怪,目的是为了命令和命令执行者解耦,但是这个模式不是把命令和命令的执行者直接绑定在一起,放在一个类里面了吗,无法分离也是解耦的一种思路吗~
4 重新回头梳理,主要目的是把命令包装成对象,添加命令序列就变成了添加对象。
public interface ICommand
{
void Excute();
}
public class BackCommand :ICommand
{
public void Excute()
{
Console.WriteLine("Back");
}
}
class CopyCommand : ICommand
{
public void Excute()
{
Console.WriteLine("Copy");
}
}
public class PasteCommand : ICommand
{
public void Excute()
{
Console.WriteLine("Paste");
}
}
public class Processer
{
List<ICommand> commandList = new List<ICommand>();
public void TakeCommand(ICommand command)
{
commandList.Add(command);
}
public void ExcuteCommands()
{
foreach (var c in commandList)
{
c.Excute();
}
}
}
public class User
{
public void DoSomething()
{
CopyCommand copy = new CopyCommand();
PasteCommand paste = new PasteCommand();
BackCommand back = new BackCommand();
Processer p = new Processer();
p.TakeCommand(copy);
p.TakeCommand(paste);
p.TakeCommand(back);
p.ExcuteCommands();
}
}