首页 > 代码库 > 命令模式
命令模式
命令模式中,Receiver和Command是关键,Command最终是调用用Receiver的Action(Command对Receiver的回调(Callback)来让命令得以实现的)。
所以使用命令模式,必须实现Command和Receiver. (如果Command是“智能”的,Receiver的代码可以移动到Command中)
在一个系统有很多功能,并且几个功能可能会产生一个复杂的功能时,命令模式是一个很好待选模式,举个现实中的例子, 调用第三方的监控摄像头API实现一个服务程序,可以open和close摄像头。实际情况是open中或许还包含着
1 要添加字幕
2 打开摄像头的话筒
这两个可选的功能。如果把添加字幕和打开话筒也封装为2个Command,那么系统会更加灵活(同一厂家摄像头中也有不支持这两命令的摄像头)
总结:
命令模式封装了软件的“功能”(要实现的功能),相同的“功能”在不同的条件下(不同的厂商,不同的平台等),具体实现(代码)是不一样的,
与代理模式,门面模式相比,命令模式更灵活,因为可以把几个命令组合起来实现一个功能,并且可动态添加和移除。
如果同不的Command有互斥的,或者很多个命令组合起来才能实现某一个功能,那么还是用门面模式吧,太多的Command组合,会使人发晕的。
如果某个服务类的功能(方法)是固定的,用代理模式可能是更好的选择。
命令模式
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。