C语言快速排序算法代码分析

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


 

 

 

C语言快速排序算法代码分析,布布扣,bubuko.com

C语言快速排序算法代码分析

上一篇:python中常用的字典内建函数


下一篇:java 容器Collection List Set Map概述