设计模式中的命令与解释器模式解析
1. 命令模式
命令模式通常使用类来实现,但也可以采用函数式的方式。传统的命令模式通过类来封装操作,而函数式命令模式则借助委托(如 Func 和 Action )来替代接口。
1.1 复合命令
在银行账户操作中,从账户 A 向账户 B 转账可以通过两个命令模拟:从 A 账户取款和向 B 账户存款。为了简化操作,可以创建一个复合命令来封装这两个操作。
abstract class CompositeBankAccountCommand
: List<BankAccountCommand>, ICommand
{
public virtual void Call()
{
ForEach(cmd => cmd.Call());
}
public virtual void Undo()
{
foreach (var cmd in
((IEnumerable<BankAccountCommand>)this).Reverse())
{
cmd.Undo();
}
}
}
class MoneyTransferCommand : CompositeBankAccountCommand
{
public MoneyTransferCommand(BankAccount from,
BankAccount to, int amount)
{
AddRange(new []
超级会员免费看
订阅专栏 解锁全文
170万+

被折叠的 条评论
为什么被折叠?



