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();
	}
}

2-36进制的 两个数相加

时间: 2024-08-03 07:11:11

2-36进制的 两个数相加的相关文章

36进制加法

36进制由0-9,a-z,共36个字符表示,最小为’0’, ‘0’.'9’对应十进制的09,‘a’.'z’对应十进制的1035 例如: '1b' 换算成10进制等于 1 * 36^1 + 11 * 36^0 = 36 + 11 = 47 要求按照加法规则计算出任意两个36进制正整数的和 如:按照加法规则,计算'1b' + '2x' = '48' 要求: 不允许把36进制数字整体转为10进制数字,计算出10进制数字的相加结果再转回为36进制 思路按照十进制的加法方法,满36向前进一位 public

实现两个数相加不用四则运算

分析:实现两个是相加不用四则运算,根据计算机中的运算不用四则运算那么肯定是位运算了. (以下分析来自剑指offer)比如我们计算5+17=22这个结果,世界上,我们可以分为3个步骤计算,第一步各位数相加不进位,此时的结果是12(个位相加不进位是2,十位相加是1),所以结果是12: 第二步做进位,5+7有进位,进位值是10:第三步是把前两步计算结果加起来.12 + 10 = 22. 那么运用位运算二进制的数字也可以这么考虑,5是二进制的101,17是二进制的10001.试着把计算分为3步走,第一步

详解2进制,10进制,16进制,8进制,36进制

本篇介绍C/C++语言中的进制的概念,主要介绍2进制.10进制.16进制,这三种是编程时必须掌握的也是最经常使用的.另外,介绍8进制和36进制,当中 36进制在实际project项目中会遇到. (本文选自<C/C++学习指南>.邵发.附录"2进制,10进制,16进制") 讲2进制.10进制.16进制的视频教程,点击观看 权利声明:作者拥有本书的所有权利. 作者授权不论什么人都能够自由转载本站点公布的内容,但转载时必须遵守下面限制: ①转载时必须全文转载.不得有不论什么改动,

PHP生成唯一编号 36进制不重复编号

PHP实现生成唯一编号,文中使用10进制转换36进制得到不重复的6000多万个唯一编号,编号位数为10位. 当要将一个庞大的数据进行编号时,而编号有位数限制,比如5位的车牌号.10位的某证件号码.订单流水号.短网址等等,我们可以使用36进制计算出符合位数的不重复的编号.我们将0-Z(0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ)分别代表数值0-35,如字母Z代表35.这样的话我要得到一个5位的编号,最大信息量就是36的5次方了,36^5 = 60466176,即最大的

详细解释2进制,10进制,16进制,8进制,36进制

本篇介绍C/C++语言中的进制的概念,主要介绍2进制.10进制.16进制,这三种是编程时必须掌握的也是最常用的.另外,介绍8进制和36进制,其中 36进制在实际工程项目中会遇到. (本文选自<C/C++学习指南>,邵发,附录"2进制,10进制,16进制") 权利声明:作者拥有本书的全部权利.作者授权任何人都可以自由转载本网站发布的内容,但转载时必须遵守以下限制: ①转载时必须全文转载,不得有任何修改,必须包含"权利声明"和"官网地址"

ORACLE 36进制和10进制,互相转换函数

第一部分 --36转10进制 create or replace function f_36to10 (str varchar) return int  is returnValue int;   str36     varchar(36);   subWork   varchar(1);   workIndex   int;   len     int;   i       int; begin returnValue:= 0;   str36 := '123456789ABCDEFGHIJK

10进制正整数转4位定长的36进制字符串

题目描述: 请设计一个函数可以把10进制的正整数转换为4位定长的36进制字符串. 36进制的规则为:“0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ”; 举例说明: 1=“0001” 10=“000A” 20=“000K” 35=“000Z” 36=“0010” 100=“002S” 2000=“01JK” 这是腾讯2015校园招聘技术类研发笔试题中的一题,给出自己的答案,欢迎拍砖. solution: string convert(int x) { string re

Oracle 10进制转36进制

CREATE OR REPLACE FUNCTION IDFMS.func_dec236 (parm IN INT DEFAULT 0)   RETURN VARCHAR2IS   /*   10进制数转36进制数   */   src   VARCHAR2 (36) := '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ'; --改成其它字符串,就是任意进制   LEN   INT;   res   VARCHAR2 (10) := '';   tmp   INT; 

36进制流水

public class CodeManage{ String pk="1000000000"; int n=500; public CodeManage(){ BigInteger src=new BigInteger(pk,36);// 36进制 for(int i=0;i<n;i++){ src=src.add(new BigInteger("1",2)); System.out.println(src.toString(36)); } } } 原文地址