zoukankan      html  css  js  c++  java
  • 命令模式

    命令模式中有三个角色,第一个是命令的执行者,这个类中定义好各种方法,只负责做事情(根据传递过来的命令调用不同方法完成操作),是个典型的model,本身并不加任何control的逻辑。第二个角色是命令。命令类会有一个抽象的接口,这个接口派生出一个个具体的命令类,每个具体命令类只负责一个逻辑,它的构造函数要传入一个参数,这个参数就是执行者,将这个参数通过构造函数传给命令类,让命令类知道让谁去执行。命令类中会有一个方法,用于让执行者开始执行这个命令类的指定动作,也就是根据这个命令类的职责去调用执行者的相关方法。第三个角色是服务员。服务员有一个数组类型的属性,用于保存命令对象。然后会有三个方法,一个用于添加命令对象,这个方法需要通过传入一个命令对象类型的参数,来实现对命令数组的添加。然后是删除命令方法,这个方法也要传入一个命令对象类型的参数,来实现对指定命令的删除。最后一个方法是通知执行者开始工作的方法。这个方法通过遍历命令对象数组,来逐一调用命令对象的执行方法,间接让命令执行者一一执行相关的命令(执行相关方法)。

    命令模式可以让“动作的请求者”从“动作的执行者”对象中解耦。

    命令模式的优点:

    1.它能较容易地设计一个命令队列;

    2.允许接收请求的一方决定是否要否决请求;

    3.在需要的情况下,可以容易地将命令记入日志;

    4.可以容易地实现对请求的撤消和重做;

    5.由于加进新的具体命令类不影响其它的类,因此增加新的具体命令类很容易;

    6.命令模式把请求一个操作的对象与知道怎么执行一个操作的对象分割开。可以让类的单一职责更明确,充分解耦。

  • 相关阅读:
    40个极简WordPress主题
    一些上流的CSS3图片样式
    15个最好的 HTML5 视频播放器
    优秀的IOS界面
    25 个超棒的 WordPress 主题(2012)
    Codekit 为Web前端打造的全能型神器(附推荐各种工具)
    10 个精彩的、激发灵感的 HTML5 游戏
    20个非常绚丽的 CSS3 特性应用演示
    25+ 个免费精美的商业风格的 WordPress 主题
    10 款非常棒的CSS代码格式化工具推荐
  • 原文地址:https://www.cnblogs.com/cly84920/p/4427083.html
Copyright © 2011-2022 走看看