D
D
Design Patterns
Github
Search…
D
D
Design Patterns
设计模式
关于 JavaScript
单例模式
工厂模式
策略模式
代理模式
迭代器模式
订阅-发布模式
命令模式
组合模式
模板方法模式
享元模式
职责链模式
中介者模式
装饰者模式
状态模式
适配器模式
设计模式原则
Powered By
GitBook
命令模式
命令模式「Command Pattern」:是一种数据驱动的设计模式,它属于行为型模式。 请求以命令的形式包裹在对象中,并传给调用对象。 调用对象寻找可以处理该命令的合适的对象,并把该命令传给相应的对象,该对象执行命令。
模式动机
命令模式中的命令指的是一个执行某些特定事情的指令,命令模式常见的场景是: 有时候需要向某些对象发送请求,但是并不知道请求的接受者是谁,也不知道请求的操作是什么。此时希望一种松耦合的方式来设计程序,使得请求发送者和请求接受者能消除彼此之间的耦合关系。
实现
我们拿电视遥控器与电视来举例,电视是请求的接受者,遥控器是请求的发送者,遥控器上有一些按钮,不同的按钮对应电视机的不同操作。在这个例子中,每个按钮实际上就是每个命令。
1
const
TV
=
{
2
//
3
}
4
// 将命令抽象出来
5
const
Command
=
{
6
turnOff
:
()
=>
{
7
console
.
info
(
'关闭电视'
)
8
},
9
turnOn
:
()
=>
{
10
console
.
info
(
'打开电视'
)
11
},
12
volumeIncrease
:
()
=>
{
13
console
.
info
(
'音量增加'
)
14
}
15
}
16
17
const
bindCommand
=
(
obj
,
command
)
=>
{
18
command
.
call
(
obj
)
19
}
20
21
const
CemoteControl
=
{
22
key1
:
bindCommand
(
Command
.
turnOff
),
23
key2
:
bindCommand
(
Command
.
trunOn
),
24
key3
:
bindCommand
(
Command
.
volumeIncrease
)
25
}
Copied!
小结
命令模式的本质是对命令进行封装,将发出命令的责任和执行命令的责任分割开
每个命令都是一个操作:请求的一方发出请求,要求执行一个操作;接受的一方收到请求,并执行操作,命令模式使请求本身成为一个「对象」,这个对象和其他对象一样可以被存储和传递
但是 JavaScript 作为将函数作为一等对象的语言,命令模式也早已融入到了 JavaScript 语言中。因此实现起来自己感觉略显鸡肋,并没有感觉很实用….
Previous
订阅-发布模式
Next
组合模式
Last modified
2yr ago
Copy link
Contents
模式动机
实现
小结