初看命令模式感觉很扯淡,凭空多了个中间层,但是看了一篇文章的解释后豁然开朗,其实命令模式是对不同操作的分层封装,比如你需要在执行指令前加log,这个和代理很像,所以写文章一定要注意这一点,要把大家第一时间想到的疑惑解释清楚。
client:具体使用者
invoker:调用command的东西
command:接口
concretecommand:具体命令,可以一个封装一个receicer的操作
receiver:具体执行者
如上这么多角色,很多人都会以为invoker是没用的。
如下是引用的,我觉得很好
一个比较有意思的例子,来说明命令模式
Client :看电视的人
Invoker :遥控器
Command :电信号
具体命令 :遥控器上的按键对应的不同的电信号
Receiver :电视机
最后说一句,并不是全部按照模式写一定就好,应该根据你的需求来应用,或者全部应用,或者部分应用,或者根本不用。