永发信息网

Java设计模式求助(命令模式)

答案:4  悬赏:80  手机版
解决时间 2021-02-27 02:22
  • 提问者网友:wodetian
  • 2021-02-26 21:25
Java设计模式求助(命令模式)
最佳答案
  • 五星知识达人网友:青尢
  • 2021-02-26 22:04
先说一下命令模式,举一个例子说明一下,玉帝传美猴王上天,玉帝创建了一个命令就是圣旨,然后指出圣旨的接受者美猴王,而太白金星只是传达命令的人。这个过程就是命令模式的应用。
这个好处就是玉帝将不会直接和美猴王打交道,他只需把命令封装在圣旨中交给太白金星传达即可其他的事他就不用问了。
下面再来解释一下观察者模式,还以西游记为例,唐三藏被红孩儿所困,孙悟空为救他去求菩萨,而菩萨听后将自己的宝珠净瓶向海中一掼,只见一只乌龟驮了一只瓶子上来。。。。这个乌龟就是观察者,被观察的对象就是菩萨,这里面就可以看出命令模式与之区别,乌龟是等待观察菩萨的动作,而玉帝是自己发出命令。这里面有时候很会乱的,观察者看的是乌龟怎么来实现,而命令是看发命令的人怎么安排的。。。。
说的不好,请多谅解!
全部回答
  • 1楼网友:长青诗
  • 2021-02-27 00:21
在软件系统中,“行为请求者”与“行为实现者”通常呈现一种“[紧耦合](紧偶合就是模块或者系统之间关系太紧密,存在相互调用。紧耦合系统的缺点在于更新一个模块的结果导致其它模块的结果变化,难以地重用特定的关联模块。)”。但在某些场合,比如要对行为进行“记录、撤销/重做、事务”等处理,这种无法抵御变化的紧耦合是不合适的。在这种情况下,如何将“行为请求者”与“行为实现者”解耦?将一组行为抽象为对象,实现二者之间的[松耦合](松耦合系统通常是基于消息的系统,此时客户端和远程服务并不知道对方是如何实现的。客户端和服务之间的通讯由消息的架构支配。只要消息符合协商的架构,则客户端或服务的实现就可以根据需要进行更改,而不必担心会破坏对方。
松耦合通讯机制提供了紧耦合机制所没有的许多优点,并且它们有助于降低客户端和远程服务之间的依赖性。但是,紧耦合性通常可以提供性能好处,便于在客户端和服务之间进行更为紧密的集成(这在存在安全性和事务处理要求时,可能是必需的)。
)。这就是命令模式(Command Pattern)
注:耦合:一个软件结构内不同模块之间互连程度的度量(耦合性也叫块间联系。指软件系统结构中个模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差,模块间耦合的高低取决于模块间接口的复杂性,调用的方式以及传递的信息。)
模式结构
  Command:
   定义命令的接口,声明执行的方法。
  ConcreteCommand:
  命令接口实现对象,是“虚”的实现;通常会持有接收者,并调用接收者的功能来完成命令要执行的操作。
  Receiver:
  接收者,真正执行命令的对象。任何类都可能成为一个接收者,只要它能够实现命令要求实现的相应功能。
  Invoker:
要求命令对象执行请求,通常会持有命令对象,可以持有很多的命令对象。
Client:
  创建具体的命令对象,并且设置命令对象的接收者。真正使用命令的客户端是从Invoker来触发执行。
模式分析
  1.命令模式的本质是对命令进行封装,将发出命令的责任和执行命令的责任分割开。
  2.每一个命令都是一个操作:请求的一方发出请求,要求执行一个操作;接收的一方收到请求,并执行操作。
  3.命令模式允许请求的一方和接收的一方独立开来,使得请求的一方不必知道接收请求的一方的接口,更不必知道请求是怎么被接收,以及操作是否被执行、何时被执行,以及是怎么被执行的。
  4.命令模式使请求本身成为一个对象,这个对象和其他对象一样可以被存储和传递。
  5.命令模式的关键在于引入了抽象命令接口,且发送者针对抽象命令接口编程,只有实现了抽象命令接口的具体命令才能与接收者相关联。
模式优点
  1.降低系统的耦合度。
  2.新的命令可以很容易地加入到系统中。
3.可以比较容易地设计一个组合命令。
  • 2楼网友:底特律间谍
  • 2021-02-26 23:35
回答者: s3938931 说的很好。
我的理解就是命令模式是主动去调用某个动作
观察者模式是被动的执行一个动作
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯