`
j040404
  • 浏览: 14833 次
  • 性别: Icon_minigender_2
  • 来自: 河北
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

设计模式之命令模式

阅读更多

刚开始学设计模式。理解的比较浅,也都是结合者现实中的情景记忆的。

命令模式涉及到五个角色,它们分别是:

  • 客户(Client)角色:创建了一个具体命令(ConcreteCommand)对象并确定其接收者。
  • 命令(Command)角色:声明了一个给所有具体命令类的抽象接口。这是一个抽象角色。
  • 具体命令(ConcreteCommand)角色:定义一个接受者和行为之间的弱耦合;实现Execute()方法,负责调用接收考的相应操作。Execute()方法通常叫做执方法。
  • 请求者(Invoker)角色:负责调用命令对象执行请求,相关的方法叫做行动方法。
  • 接收者(Receiver)角色:负责具体实施和执行一个请求。任何一个类都可以成为接收者,实施和执行请求的方法叫做行动方法。

 

命令模式,可以理解为,你去饭店吃饭。“你”就是请求者,你向服务员说要点的菜,就是发出的命令,厨师就是命令接受者。

首先,厨师(命令接受者)是独立的,他只是做饭。所以先写Receiver

 

package com.pattern.command;

/** *//**
 * 命令模式之接受者角色
 * 不依赖于任何对象
 * 
@author 妙善
 * 
 
*/

public class Receiver ...{
    
public void doAction() ...{
        System.out.println(
"执行操作");
    }

}

 

package com.pattern.command;
/** *//**
 * 命令接口
 * 
@author 妙善
 *
 
*/

public interface Command ...{
    
void execute();
}

 

 

package com.pattern.command;
/** *//**
 * 命令实现
 * 
@author 妙善
 *
 
*/

public class ConcreteCommand implements Command ...{
    
private Receiver receiver;

    
public ConcreteCommand(Receiver receiver) ...{
        
this.receiver = receiver;
    }


    @Override
    
public void execute() ...{
        
// TODO Auto-generated method stub
        receiver.doAction();

    }


}

 

 

package com.pattern.command;
/** *//**
 * 请求者角色-命令发出者
 * 
@author 妙善
 *
 
*/

public class Invoker ...{
    
private Command command;

    
public Invoker(Command command) ...{
        
this.command = command;
    }


    
public void doInvokeAction() ...{
        command.execute();
    }

}

 

 

package com.pattern.command;

/** *//**
 * 客户端
 * 
 * 
@author 妙善
 * 
 
*/

public class Client ...{

    
/** *//**
     * 
@param args
     
*/

    @SuppressWarnings(
"unused")
    
public static void main(String[] args) ...{
        
// TODO Auto-generated method stub

        Receiver receiver 
= new Receiver();
        Command command 
= new ConcreteCommand(receiver);
        Invoker invoker 
= new Invoker(command);
        invoker.doInvokeAction();
    }


}

 

分享到:
评论

相关推荐

    设计模式之命令模式案例代码

    命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在本文中,我们将深入探讨命令模式的原理、结构和实际应用,并...

    深入浅出设计模式之命令模式

    ### 深入浅出设计模式之命令模式 #### 前言 设计模式作为软件工程中的重要组成部分,为开发者提供了解决常见问题的有效途径。在众多设计模式中,命令模式是一种行为型设计模式,它把请求封装成对象,以便使用不同的...

    [行为模式] head first 设计模式之命令模式(Command)

    【行为模式】Head First 设计模式之命令模式(Command) 命令模式是一种行为设计模式,它将请求封装为一个对象,从而使我们能支持可撤销的操作、参数化对象以及将请求排队等高级操作。在Head First的设计模式书中,...

    java设计模式之命令模式

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

    设计模式之命令模式源码示例

    命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在软件工程中,这种模式广泛应用在各种场景中,以提高代码的灵活...

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

    命令模式是一种行为设计模式,它的主要目的是将请求者与接收者解耦,使得请求的发起者无需知道哪个对象会执行这个请求,同时也让系统更容易扩展。这种模式在软件工程中广泛应用,特别是在事件驱动和分布式系统中。 ...

    Java设计模式之命令模式/Java函数式编程 笔记

    Java设计模式之命令模式/Java函数式编程 笔记

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

    命令模式是一种行为设计模式,它将请求封装成独立的对象,使得可以使用不同的请求、队列请求、记录请求历史以及支持可撤销的操作。这种模式在软件工程中被广泛应用,尤其是在需要解耦请求发起者和接收者时,提高了...

    23钟设计模式之命令模式

    命令模式是一种行为设计模式,它的主要目的是将请求封装为一个对象,以便支持可撤销的操作、参数化不同命令以及将命令的执行与请求者解耦。在23种经典设计模式中,命令模式因其灵活性和实用性而被广泛使用。 在命令...

    设计模式之命令模式详解(内附有例子,无源码)

    命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在软件工程中,这种模式常用于降低系统之间的耦合度,提高灵活性...

    设计模式之命令模式Java实现

    命令模式是一种行为设计模式,它将请求封装为一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。在Java中实现命令模式,我们可以按照以下步骤进行: 1. **定义...

    c++-设计模式之命令模式(Command Pattern)

    命令模式(Command Pattern)是一种行为型设计模式,它将请求封装为对象,从而使您可以使用不同的请求、队列请求或日志请求,并支持可撤销操作。命令模式通常用于实现操作的解耦,使得发送者和接收者之间不直接关联...

Global site tag (gtag.js) - Google Analytics