首页 > 代码库 > 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(); }}
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。