设计模式(十三)-命令模式

命令模式

命令模式是一种数据驱动的设计模式,它属于行为模式,请求以命令的形式包裹在对象中,并传给调用对象,调用对象寻找处理该命令合适的对象,并把该命令传给相应的对象,该对象执行命令.

三种角色

  1. Receiver接受者角色:该角色就是干活角色,命令传递到这里是应该被执行的.
  2. Command命令角色:需要执行的所有命令都在这里声明.
  3. Invoker调用者角色:接收到命令,并执行命令.
  • 图例


    image.png
  • 代码示例

class Cooker{
    cook(){
        return console.log('烹饪')
    }
}

class Cleaner{
    clean(){
        return console.log('清洁')
    }
}

class CookCommand{
    constructor(receiver){
        this.receiver=receiver
    }
    execute(){
        this.receiver.cook()
    }
}

class CleanCommand{
    constructor(receiver){
        this.receiver=receiver
    }
    execute(){
        this.receiver.clean()
    }
}
class Customer{
    constructor(command){
        this.command=command
    }
    clean(){
        this.command.execute()
    }
    cook(){
        this.command.execute()
    }
}

let cooker=new Cooker()
let cleaner=new Cleaner()
let cookCommand=new CookCommand(cooker)
let customer=new Customer(cookCommand);
customer.cook() //烹饪
  • 应用场景
    1.计数器



    
    
    
    Document


    

0

  • 效果


    image.png
优点 缺点
降低了系统的耦合度,新的命令容易添加到系统中. 使用命令模式导致系统中有过多的具体命令类.

你可能感兴趣的:(设计模式(十三)-命令模式)