首页 > 代码库 > 2-36进制的 两个数相加

2-36进制的 两个数相加

       最近在很多场合都看见设计模式的影子,一直以来,都投入主要时间在搞算法与数据结构,很来发现设计模式真的很重要。有的时候代码的可维护、可重用、可扩展确实胜过单纯的算法效率高。所以拾起大牛书籍《大话设计模式》同时参考网上诸大牛的博客,开始我的设计模式之旅。由于平时编程时用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();	}}