Intent:
Encapsulate a request as an object , thereby letting you parameterize clients with dferent requests, queue or log requests, and support undoable operations.
瞎谈:其实很好理解命令模式关心就是命令(或者称为操作)打个比方在个公司里面整个运作就像个系统某个boss发布了个命令中层领导接到这个命令然后指派给具体负责这个员工整个流程很清晰吧有个需求如何将这个流程固定下来形成个系统我们只要抓住了重点:命令将它抽取出来其他都迎刃而解了抽取出命令封装成个独立对象实现了解耦至于其他可以方便地扩展不论这个命令是CEO人事部还是你爸提出来无论这个命令执行者是张 3还是王 8这个模式产生其实是哲学上“抓住主要矛盾”更多例子如其他作家举“去路边吃烤肉和去烤肉店吃烤肉有什么区别”或者“美猴王大闹天宫中玉帝拍太白金星捉来猴子”
正经:命令模式把个请求或者操作封装到个对象中命令模式运行系统使用区别请求把客户端参数化对请求排队或者记录请求日志可以提供命令撤销和恢复功能
Java命令模式本质是对命令封装从而把发出命令责任和执行命令责任分割开了委派给区别对象通俗地说我是老总我只管发个命令至于这个命令发给谁谁执行关我P事我发钱请人不是为了给自己找麻烦你是负责事情员工你天职是做好上级交给你任务踏踏实实不要知道太多不要 8卦不要问太多了
好处:
◆很容易构造个命令队列
◆记录相关命令日志
◆增加命令状态实现命令撤销和重做
◆允许接受请求方决定是否可做
◆新命令轻而易举可以加入其中
缺点:可能会有过多具体命令类存在
实现:
也不难第步关键是建立Command对象拥有点面向对象思想就知道把它先抽象让继承它对象去具体实现Client对象是发布命令Invoker对象是传递命令就是跑腿Receiver是受气包底层最累员负责干活吧看看下面类图就清晰了:
="xspace-totlerecord">2="xspace-totlepages">1/2="xspace-current">12>
最新评论