如何在Eclipse中连接源码
时间:2014-05-11 07:31:40
收藏:0
阅读:414
最近在很多场合都看见设计模式的影子,一直以来,都投入主要时间在搞算法与数据结构,很来发现设计模式真的很重要。有的时候代码的可维护、可重用、可扩展确实胜过单纯的算法效率高。所以拾起大牛书籍《大话设计模式》同时参考网上诸大牛的博客,开始我的设计模式之旅。由于平时编程时用C/C++,现在是Java,也练练Java语法。
今天先介绍一下命令模式。
概念:
命令模式(Command):将一个请求封装成一个对象,从而使你可用不同的请求对象对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。
组成:
(1)、抽象命令类(Commamd):提供一个执行操作的接口;
(2)、具体命令类(ConcreteConmmad):完成或继承抽象命令类,提供具体命令的实现:将一个接受者类绑定为一个动作,调用接受者对应的操作。
(3)、接受者类(Receiver):完成具体操作;
(4)、请求者类(Invoker):提供请求者对应的操作。
优点:
容易把命令加入集合,封装具体实现。
示例代码:
package Pattern; import java.util.ArrayList; interface Receiver { public void Action(); } class Receiver1 implements Receiver { public void Action() { System.out.println("执行动作1!"); } } class Receiver2 implements Receiver { public void Action() { System.out.println("执行动作2!"); } } abstract class Command { protected Receiver myReceiver; public Command(Receiver tempReceiver) { myReceiver = tempReceiver; } abstract public void Excute(); } class ConcreteCommand extends Command { public ConcreteCommand(Receiver tempReceiver) { super(tempReceiver); } public void Excute() { myReceiver.Action(); } } class Invoker { private ArrayList<Command> myCommand=new ArrayList<Command>();//一定要实例化 public void Add(Command tempCommand) { myCommand.add(tempCommand); } public void Excute() { for (int i = 0; i < myCommand.size(); i++) myCommand.get(i).Excute(); } } public class CommandPattern { public static void main(String[] a) { ConcreteCommand myConcreteCommand1 = new ConcreteCommand( new Receiver1()); ConcreteCommand myConcreteCommand2 = new ConcreteCommand( new Receiver2()); Invoker myInvoker = new Invoker(); myInvoker.Add(myConcreteCommand1); myInvoker.Add(myConcreteCommand2); myInvoker.Add(myConcreteCommand1); myInvoker.Excute(); } }
评论(0)