`
jinheking
  • 浏览: 77806 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

设计模式:Command

阅读更多
现在学习《Head First Design Pattern》,现在正看到第六章 the Command Pattern
我把书中的简单命令模式用D重写了一下,目的是大家共通学习!
import std.stdio;

/**
* 本程序是学习《Head First Design Pattern》做得程序,思想属于Head First
* 网址<a href="http://www.headfirstlabs.com/">http://www.headfirstlabs.com/</a>
* Authors:  Caoqi
* version: 0.001
* Date: April 15, 2007
*/
void SimpleCommand(){}


/**
* 命令的接口
*/
public interface Command {
        void execute();
}
/**
* 不执行命令的实现
*/
class NoCommand:Command{
        void execute() {}
}
/**
*
* 电灯类
*/
class Light {
        //String strMessage="";
        char[] strMessage="";
        /**
        * Params: strMessage = 消息
        *
        */
        this(char[] strMessage){
                this.strMessage=strMessage;
        }
        /**
        *  当电灯打开时进行显示
        */
        void on(){
                char[] str=this.strMessage;
                str~="  on";
                writefln(str);
        }
        /**
        * 当电灯关闭的时候显示
        */
        void off(){
                char[] str=this.strMessage;
                str~="  off";
                writefln(str);

        }
}
/**
* 开灯类
*/
class LightOnCommand:Command{
        Light light;
        this(Light light){
                this.light=light;
        }
        /**
        * 运行
        */
        void execute() {
                light.on();
        }

}

/**
* 开灯类
*/
class LightOffCommand:Command{
        Light light;
        this(Light light){
                this.light=light;
        }
        /**
        * 运行
        */
        void execute() {
                light.off();
        }

}

/**
* 简单远程控制类
*/
class SimpleRemoteControl {
        Command slot;///命令变量
        this() {
                // TODO Auto-generated constructor stub

        }
        /**
        * 设置要职行的命令
        * Params: command = 要执行的命令
        *
        */
        void setCommand(Command command){
                slot=command;
        }
        /**
        * 执行命令
        */
        void buttonWasPressed(){
                slot.execute();
                //return 1;
        }
}


/**
* 主程序
*/
/++++++++++++++++++++++++

  + Our function.

  + Example:

  + --------------------------

  +  import std.stdio;

  +
  +   void main(char[][] args) {
  +              SimpleRemoteControl remote=new SimpleRemoteControl();
  +              Light light=new Light("Light");
  +              LightOnCommand lightOn=new LightOnCommand(light);

  +              remote.setCommand(lightOn);
  +              remote.buttonWasPressed();
  + }

  + --------------------------

  +/
void main(char[][] args) {
        SimpleRemoteControl remote=new SimpleRemoteControl();
        Light light=new Light("Light");
        LightOnCommand lightOn=new LightOnCommand(light);


        remote.setCommand(lightOn);
        remote.buttonWasPressed();

        LightOffCommand lightOff=new LightOffCommand(light);
        remote.setCommand(lightOff);
        doStuff(&remote.buttonWasPressed);///此处练习delegate

}

void doStuff(void delegate() d) {
     d() ;
}
分享到:
评论
1 楼 jinheking 2007-04-12  
帮助文档
http://www.caoqi.com/d/command.html

相关推荐

    《设计模式:可复用面向对象软件的基础》英文版

    ### 设计模式:可复用面向对象软件的基础 #### 书籍概述 《设计模式:可复用面向对象软件的基础》是一本由Erich Gamma、Richard Helm等四位国际知名的软件工程师共同编写的经典之作,该书提供了面向对象软件设计中...

    设计模式:可复用面向对象软件的基础--详细书签版

     “[设计模式]在实用环境下特别有用,因为它分类描述了一组设计良好,表达清楚的面向对象软件设计模式。整个设计模式领域还很新,本书的四位作者也许已占据了这个领域造诣最深的专家中的半数,因而他们定义模式的方法...

    《设计模式:可复用面向对象软件的基础》学习并理解 23 种设计模式

    ### 设计模式基础及其重要性 #### 设计模式概述 设计模式是一种被广泛采用的、经过验证的解决方案,用于解决软件开发过程中常见的设计问题。它不仅帮助开发者编写可复用的代码,还促进了团队成员之间的有效沟通。...

    设计模式-command

    在“设计模式-command”中,我们看到这个模式的应用,通过将一个操作封装为一个对象(即命令对象),使得发送者可以无需知道接收者的具体实现,只需要知道如何发送命令即可。这种松耦合使得系统更易于维护和扩展。 ...

    1.《设计模式:可复用面向对象软件的基础(完整书签)》

    《设计模式:可复用面向对象软件的基础》是软件工程领域的一部经典著作,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位大师合著,被誉为“Gang of Four”(GoF)的经典之作。这本书详细阐述了23...

    设计模式之Command(命令)模式

    **设计模式之Command(命令)模式** Command模式是一种行为设计模式,它将请求封装为一个对象,使得可以使用不同的请求、队列或者日志请求,同时支持可撤销的操作。这种模式在软件工程中广泛应用于解耦请求的发送者...

    设计模式可复用面向对象软件的基础 源码

    设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决常见问题的最佳实践。"设计模式可复用面向对象软件的基础"这一主题强调了设计模式在创建可维护、可扩展的面向对象软件中的核心作用。源码实现则为我们...

    JAVA设计模式chm文档

    创建模式: 设计模式之Factory 设计模式之Prototype(原型) ...设计模式之Command 设计模式之State 设计模式之Strategy(策略) 设计模式之Mediator(中介者) 设计模式之Interpreter(解释器) 设计模式之Visitor

    C++设计模式代码资源23_Command_命令模式.zip

    **C++设计模式:命令模式** 命令模式是一种行为设计模式,它将请求封装为一个对象,使得你可以使用不同的请求、队列或者记录请求日志,同时支持可撤销的操作。在C++编程中,命令模式是一种非常实用的设计模式,能够...

    《设计模式:可复用面向对象软件的基础》

    《设计模式:可复用面向对象软件的基础》是软件工程领域的一部经典著作,由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides四位大师合著,被誉为“Gang of Four”(GoF)的经典之作。这本书详细阐述了23...

    23种设计模式(C++).pdf

    设计模式是面向对象编程领域中,解决特定问题的一般性方案。它们由四人组(Gang of Four,简称GoF)在1994年的《设计模式:可复用面向对象软件的基础》一书中提出。设计模式分为创建型、结构型和行为型三类,总共...

    设计模式之Command模式和代码实现

    Command模式是一种行为设计模式,它的主要目的是将命令的发起者(Invoker)与命令的执行者(Receiver)解耦。在Command模式中,一个命令对象封装了特定的请求,调用者(Invoker)只需要知道如何发送命令,而无需知道...

    设计模式:Java语言中的应用.zip

    设计模式是软件工程中的一种最佳实践,它是在特定上下文中解决常见问题的模板,可以被重复使用,以提高代码的可读性、可维护性和可扩展性。在Java语言中,设计模式的应用广泛且至关重要,因为它们能帮助开发者遵循...

    设计模式:可复用面向对象软件基础

    设计模式是软件开发中的宝贵财富,它代表了在特定情境下解决常见问题的最佳实践。《设计模式:可复用面向对象软件基础》是一本程序员必备的经典读物,它由Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides...

    设计模式_设计模式_

    设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决常见问题的最佳实践。设计模式并不是具体的代码或库,而是一种通用解决方案的描述,适用于多种编程语言和环境。这些模式是经验丰富的开发者们在长期...

    设计模式文档 chm

    设计模式参考文档 创建模式: 设计模式之Factory 设计模式之Prototype...设计模式之Command 设计模式之State 设计模式之Strategy(策略) 设计模式之Mediator(中介者) 设计模式之Interpreter(解释器) 设计模式之Visitor

    设计模式:可复用面向对象软件的基础(中文版+英文版打包)

    设计模式是软件工程中的一种重要概念,它代表了在特定情境下解决常见问题的最佳实践。这些模式来源于经验,经过时间的验证,已经成为面向对象编程中不可或缺的一部分。《设计模式:可复用面向对象软件的基础》这本书...

    设计模式之Command

    Command模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在Java编程中,这种模式常用于解耦调用者和接收者,使得系统...

    Tomcat 系统架构与设计模式,第 2 部分: 设计模式分析1

    Tomcat 系统架构与设计模式,第 2 部分:设计模式分析 1 本文将对 Tomcat 系统架构与设计模式进行深入分析,着重介绍设计模式在 Tomcat 中的应用。 标题:Tomcat 系统架构与设计模式,第 2 部分:设计模式分析 1 ...

    设计模式PPT

    设计模式是软件工程中的一种重要概念,它是在特定情境下,为解决常见问题而形成的一套最佳实践。设计模式并不是具体的代码或库,而是一种通用的解决方案模板,可以在不同的编程语言和环境中应用。通过理解并熟练运用...

Global site tag (gtag.js) - Google Analytics