命令模式
来源:互联网 发布:php cs fixer v2.phar 编辑:程序博客网 时间:2024/05/01 20:48
在软件系统中,行为的请求者和行为的执行者通常是一种"紧耦合",命令模式的产生就是为了实现他们之间的"松耦合"
在命令模式中,通常包含以下几种角色:
1、ICommond:
定义命令的接口,声明命令的方法。
2、Commond
定义具体的命令,里面通常会包含一个执行者
3、Receiver
行为的执行者
4、Invoker
行为请求者,通常包含一个命令对象,也可包括多个命令对象,使用list组织起来
5、Client
创建具体的命令对象,并且设置命令对象的接收者。注意这个不是我们常规意义上的客户端,而是在组装命令对象和接收者,或许,把这个Client称为装配者会更好理解,因为真正使用命令的客户端是从Invoker来触发执行。
下面就来用java代码实现这些设计模式:
定义ICommond
public interface ICommond{public void execute();}
定义Receiver
public class Receiver{public void doSome(){System.out.println("正在做某事....");}}
定义Commond
public class Commond implements ICommond{private Receiver receiver;public Commond(Receiver receiver){this.receiver=receiver;}@Overridepublic void execute(){// TODO Auto-generated method stubreceiver.doSome();}}
定义Invoker
public class Invoker{private ICommond commond;public Invoker(ICommond commond){this.commond=commond;}public void doSome(){commond.execute();}}
定义Client
public class Client{public static void main(String[] args){Receiver receiver=new Receiver();Commond commond=new Commond(receiver);Invoker invoker=new Invoker(commond);invoker.doSome();}}