首页 / 设计模式 / 设计模式漫谈之命令模式
设计模式漫谈之命令模式
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了设计模式漫谈之命令模式,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2190字,纯文字阅读大概需要4分钟。
内容图文
有一段时间没有写博客了,中间去广州调研需求一段时间。也是各种曲折,又一次感悟到老程序员最重要的是工作习惯,工作态度,工作经验,这些是新入行的没法比的。因为他们还不知道自己是否要做程序员。
昨天第一次去女朋友家。还算顺利。最近可心烦,工作上的事,资金上的事。就想写篇博客压压惊,静静心。
在面向对象的世界里,两个对象想发生任何关系,必须满足,想发生关系的对象可以访问到另一个对象的空间。即A对象想和B对象发生关系,A对象必须存B对象的引用。
在面向对象的世界里,所有东西都有宿主,方法,属性,事件的宿主是类,类的宿主是模块,模块的宿主是程序集,程序集的宿主是程序域,程序域的数据是进程。
对象知道其空间里的所有东西,也知道类空间里的东西。
命令模式,就是对不同的命令对象进行统一的解释。
直接上例子,我来解释:
//需要继承的对象,
//A可以访问B对象,抽象的把关系说清楚
public abstract class Command
{
//子类对象可以访问的关系对象
protected Barbecuer receiver;
public Command(Barbecuer receiver)
{
this.receiver = receiver;
}
//需要具体写的方法
abstract public void ExcuteCommand();
}
//具体的关系对象,对抽象对象负责任的对象,具有对象空间的对象
class BakeMuttonCommand : Command
{
public BakeMuttonCommand(Barbecuer receiver)
: base(receiver)
{ }
//重写的方法
public override void ExcuteCommand()
{
receiver.BakeMutton();
}
}
//关系对象
public class Barbecuer
{
//对象中的空间成员
public void BakeMutton()
{
Console.WriteLine("烤羊肉串!");
}
//对象中的空间成员方法
public void BakeChickenWing()
{
Console.WriteLine("烤鸡翅!");
}
}
//继续封装,就是向上层继续发生关系
public class Waiter
{
//原则是抽象对抽象
private IList<Command> orders = new List<Command>();
//过滤对象
public void SetOrder(Command command)
{
if (command.ToString() == "命令模式.BakeChickenWingCommand")
{
Console.WriteLine("服务员:鸡翅没有了,请点别的烧烤。");
}
else
{
orders.Add(command);
Console.WriteLine("增加订单:" + command.ToString() + " 时间:" + DateTime.Now.ToString());
}
}
public void CancelOrder(Command command)
{
orders.Remove(command);
Console.WriteLine("取消订单:" + command.ToString() + " 时间:" + DateTime.Now.ToString());
}
public void Notify()
{
foreach (Command cmd in orders)
{
cmd.ExcuteCommand();
}
}
}
//空间对象
//发生关系执行关系中的动作
Barbecuer boy = new Barbecuer();
Command bakeMuttonCommand1 = new BakeMuttonCommand(boy);
Command bakeMuttonCommand2 = new BakeMuttonCommand(boy);
Command bakeChickenWingCommand1 = new BakeChickenWingCommand(boy);
Waiter girl = new Waiter();
girl.SetOrder(bakeMuttonCommand1);
girl.SetOrder(bakeMuttonCommand2);
girl.SetOrder(bakeChickenWingCommand1);
girl.Notify();
总结:程序员最重要的是编程思想,最后语言只是思想的具体实现。抽象对抽象设计,未来的对象想发生关系,必须能访问到有关系对象的空间。封装就是封装不同对象关系的宿主对象。命令就是动作,动作对应方法,命令模式就是封装方法。所有类型从个数上区分,分单个对象,多个对象类型。
父亲节最好的礼物,应该是我快订婚了,哈哈
原文:https://www.cnblogs.com/wang-charle/p/9192088.html
内容总结
以上是互联网集市为您收集整理的设计模式漫谈之命令模式全部内容,希望文章能够帮你解决设计模式漫谈之命令模式所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。