- 浏览: 65755 次
- 性别:
- 来自: 上海
最新评论
-
java苹果+番茄:
已经修改,感谢大家提的意见;有一年多没进来了,很惭愧;以后一定 ...
java设计模式笔记链接地址汇总 -
youthon:
命令(Command)模式【行为模式第九篇】的链接应为http ...
java设计模式笔记链接地址汇总 -
youthon:
你给的链接只有你自己才能打开,你改改吧
java设计模式笔记链接地址汇总 -
shaozhi_jinni:
[b][/b][i][/i][u][/u]引用引用
[img ...
模板方法(Template Method)模式【行为模式第十篇】 -
Tank03:
慢慢的走~
android开发学习中(已经学会了几个小玩意),兴趣大增
多例模式(Multiton Pattern)
1、多例模式特点:
1) 多例类可有多个实例
2) 多例类必须自己创建、管理自己的实例,并向外界提供自己的实例。
1、多例模式特点:
1) 多例类可有多个实例
2) 多例类必须自己创建、管理自己的实例,并向外界提供自己的实例。
//多例类(骰子) import java.util.Random; import java.util.Date; public class Die{ private static Die die1 = new Die(); private static Die die2 = new Die(); private Die(){ } //工厂方法 public static Die getInstance(int whichOne){ if(whichOne == 1){ return die1; }else{ return die2; } } //掷骰子,返回一个在1~6之间的随机数 public synchronized int dice(){ Date d = new Date(); Random r = new Random(d.getTime()); int value = r.nextInt(); value = Math.abs(value); value = value % 6; value += 1; return value; } } //客户端 public class Client{ private static Die die1, die2; public static void main(String args[]){ die1 = Die.getInstance(1); die2 = Die.getInstance(2); die1.dice(); die2.dice(); } } //多例类是单例类的推广,而单例类是多例类的特殊情况 多例类对象的状态如果是可以在加载后改变的,那么这种多例对象叫做可边多例对象;如果多例对象的状态在加载后不可以改变 那么这种多例对象叫做不变多例对象 //怎样使用Locale对象和ResourceBundle对象 Locale locale = new Locale("fr", "FR"); ResourceBundle res = ResourceBundle("shortname",locale); res会加载一个名为shortname_fr_FR.properties的Resource文件 //多例类LingualResource import java.util.HashMap; import java.util.Locale; import java.util.ResourceBundle; public class LingualResource{ private String language = "en"; private region = "US"; //region(区域) private String localeCode = "en_US"; private static HashMap instances = new HashMap(19); private Locale locale = null; private ResourceBundle resourceBundle = null; private LingualResource lnkLingualResource; private LingualResource(String language, String region){ this.localeCode = language; this.region = region; localeCode = makeLocaleCode(language, region); locale = new Locale(language, region); resourceBundle = ResourceBundle.getBundle(FILE_NAME, locale); instances.put(makeLocaleCode(language, region), resourceBundle); } private LingualResource(){ } //工厂方法,返回一个具体的内部状态的实例 public synchronized static LingualResource getInstance(String language, String region){ if(makeLocaleCode(language, region)){ return (LingualResource)makeLocaleCode(language, region); }else{ return new LingualResource(language, region); } } public String getLocaleString(String code){ return resourceBundle.getString(code); } private static String makeLocaleCode(String language, String region){ return language + "_" + region; } } //makeLocaleCode()是一个辅助性的方法,在传入语言代码和地区代码时,此方法可以返回一个Locale代码 在getInstance()方法被调用时,程序会首先检查传入的Locale代码是否已经在instances集合中存在,如果已经存在 即直接返回同它所对应的LingualResource对象,否则就会首先创建一个此Locale代码所对应的LingualResource对象,将之存入 instances集合,并返回这个实例 //客户端 public class LingualResourceTester{ public static void main(String agrs[]){ LingualResource ling = LingualResource.getInstance("en", "US"); String usDollar = ling.getLocaleString("USD"); System.out.println("USD = " + usDollar); LingualResource lingZh = LingualResource.getInstance("zh", "CH"); String usDollarZh = lingZh.getLocaleString("USD"); System.out.println("USD = " + usDollarZh); } } //如果客户是美国客户,那么在jsp网页中可以通过调用getLocalString()方法得到相应的英文说明 Resource文件res_en_US.properties的内容 ---------------------------------------- LingualResource ling = LingualResource.getInstance("en", "US"); String usDollar = ling.getLocaleString("USD"); ---------------------------------------- 返回----US Dollar 中国用户: --------------------------------------- LingualResource lingZh = LingualResource.getInstance("zh", "CH"); String usDollarZh = lingZh.getLocaleString("USD"); ---------------------------------------- 返回----美元 //////////////////////////////////////////// 为美国英文准备的Resource文件res_en_US.properties的内容如下: USD = US Dollar JPY = Japanese Yen 为简体中文准备的Resource文件res_zh_CH.properties的内容如下: USD = 美元 JPY = 日元 =======================问答题================================= 一个根据语言代码和地区代码将数字格式化的例子 import java.util.Locale; import java.text.NumberFormat; public class NumberFormatTester{ public static void displayNumber(Double amount, Locale currentLocale){ NumberFormat formatter; String amountOut; formatter = NumberFormat.getNumberInstance(currentLocale); amountOut = formatter.format(amount); System.out.println(amountOut + " " + currentLocale.toString()); } public static void main(String agrs[]){ displayNumber(new Double(1234567.89), new Locale("en", "US")); displayNumber(new Double(1234567.89), new Locale("de", "DE")); displayNumber(new Double(1234567.89), new Locale("fr", "FR")); } } 一个根据语言代码和地区代码将货币数字格式化的例子 import java.util.Locale; import java.text.NumberFormat; public class CurrencyFormatTester{ public static void displayCurrency(Double amount, Locale currentLocale){ NumberFormat formatter; String amountOut; formatter = NumberFormat.getCurrencyInstance(currentLocale); amountOut = formatter.format(amount); System.out.println(amountOut + " " + currentLocale.toString()); } public static void main(String agrs[]){ displayCurrency(new Double(1234567.89), new Locale("en", "US")); displayCurrency(new Double(1234567.89), new Locale("de", "DE")); displayCurrency(new Double(1234567.89), new Locale("fr", "FR")); } } 一个根据语言代码和地区代码将百分比格式化的例子 import java.util.Locale; import java.text.NumberFormat; public class PercentFormatTester{ public static void displayPercent(Double amount, Locale currentLocale){ NumberFormat formatter; String amountOut; formatter = NumberFormat.getPercentInstance(currentLocale); amountOut = formatter.format(amount); System.out.println(amountOut + " " + currentLocale.toString()); } public static void main(String agrs[]){ displayPercent(new Double(4567.89), new Locale("en", "US")); displayPercent(new Double(4567.89), new Locale("de", "DE")); displayPercent(new Double(4567.89), new Locale("fr", "FR")); } }
发表评论
-
java设计模式笔记链接地址汇总
2009-10-24 14:46 2252各位,这些笔记已经生成了pdf,如果有兴趣的可以在本文末尾下载 ... -
MVC模式【行为模式第十三篇】
2009-10-23 23:36 1479MVC模式:就是模型-视 ... -
状态(State Pattern)模式【行为模式第十二篇】
2009-10-23 23:35 1323状态(State Pattern)模式:又称为状态对象模式,状 ... -
责任链(Chain of Responsibility)模式【行为模式第十一篇】
2009-10-23 23:33 1215责任链(Chain of Responsibility)模式 ... -
模板方法(Template Method)模式【行为模式第十篇】
2009-10-23 23:32 1188模板方法(Template Method)模式 模板方法模式 ... -
命令(Command)模式【行为模式第九篇】
2009-10-23 23:31 1373命令(Command)模式: ... -
解释器(Interpreter)模式【行为模式第八篇】
2009-10-23 23:29 1075解释器(Interpreter)模 ... -
观察者(Observer)模式【行为模式第七篇】
2009-10-23 23:28 1229观察者(Observer)模式 ... -
访问者(Visitor)模式【行为模式第六篇】
2009-10-23 23:26 1066访问者(Visitor)模式: 访问者模式是对象的行为模式。 ... -
迭代子(Iterator)模式【行为模式第五篇】
2009-10-23 23:25 1412迭代子(Iterator)模式: 迭代子模式又叫游标(Cur ... -
调停者(Mediator)模式 【行为模式第四篇】
2009-10-23 23:23 2631调停者(Mediator)模式 调停者模式是对象的行为模式。 ... -
策略(Strategy)模式 【行为模式第三篇】
2009-10-23 23:22 1504策略(Strategy)模式 策略模式属于对象的行为模式。其 ... -
不变(Immutable)模式【行为模式第二篇】
2009-10-23 23:21 1647不变(Immutable)模式 一个对象的状态在对象被创建之 ... -
备忘录(Memento Pattern)模式 【行为模式第一篇】
2009-10-23 23:19 1951备忘录(Memento Pattern)模式 备忘录模式又叫 ... -
适配器模式举例【结构模式第八篇】
2009-10-23 23:17 1027XMLProperties与适配器模式举例: //---- ... -
适配器模式【结构模式第六篇】
2009-10-23 23:12 1156适配器模式(Adapter Pattern)(另称-变压器模式 ... -
桥梁(Bridge)模式【结构模式第五篇】
2009-10-23 23:09 1311桥梁(Bridge)模式: 一、桥梁模式的用意 桥梁模式 ... -
门面(Facade)模式【结构模式第四篇】
2009-10-23 23:08 1205门面(Facade)模式: 是对象的结构模式。外部与一个子系 ... -
亨元(Flyweight Pattern)模式【结构模式第三篇】
2009-10-23 23:07 1098亨元(Flyweight Pattern) ... -
合成(Composite)模型模式【结构模式第二篇】
2009-10-23 23:04 1350合成(Composite)模型模式: 属于对象的结构模式,有 ...
相关推荐
第5章 迪米特法则 5.1 迪米特法则的定义 5.2 我的知识你知道得越少越好 5.3 最佳实践 第6章 开闭原则 6.1 开闭原则的定义 6.2 开闭原则的庐山真面目 6.3 为什么要采用开闭原则 6.4 如何使用开闭原则 6.5 最佳实践 第...
第5篇主要介绍小颗粒度基础模式和应用案例;第6篇主要介绍应用全局的模式化的实现方法,包括现在已经被普遍应用的N层模式及某些关键性框架产品采用的“微内核”模式;第7篇主要是一些针对Web和Web Service领域的模式...
第5章 抽象工厂模式(Abstract Factory) 5.1 模式解说 5.2 结构和用法 5.2.1 模式结构 5.2.2 代码模板 5.3 范例与实践 5.3.1 用抽象工厂模式动态构造界面风格 5.3.2 WebSnap的Web Module架构与抽象工厂模式 ...
第5章 抽象工厂模式(Abstract Factory) 5.1 模式解说 5.2 结构和用法 5.2.1 模式结构 5.2.2 代码模板 5.3 范例与实践 5.3.1 用抽象工厂模式动态构造界面风格 5.3.2 WebSnap的Web Module架构与抽象...
《python编程实战:运用...第4章和第5章详细讲解了python的高级并发技术以及cython的用法; 第6章具体介绍了python的高级网络编程; 第7章阐释了如何用tkint er开发图形用户界面; 第8章讲解了如何用opengl绘制3d图形。
第5章行为型模式实训 5.1知识讲解 5.1.1行为型模式概述 5.1.2职责链模式 5.1.3命令模式 5.1.4解释器模式 5.1.5迭代器模式 5.1.6中介者模式 5.1.7备忘录模式 5.1.8观察者模式 5.1.9状态模式 5.1.10策略...
第5章 行为模式 147 5.1 CHAIN OF RESPONSIBIL ITY(职责链) —对象行为型模式 147 5.2 COMMAND(命令)—对象行为型 模式 154 5.3 INTERPRETER(解释器)—类行为型 模式 162 5.4 ITERATOR(迭代器)—对象行为型 ...
原始模型模式: 原始模型模式 通过给出一个原型对象来指明所要创建的对象的类型,然后用复制这个原 型对象的方法创建出更多同类型的对象。 原始模型模式允许动态的增加或减少产品类, 产品 类不需要非得有任何事先...
《设计模式:可复用面向对象软件的基础》是引导读者走出软件设计迷宫的指路明灯,凝聚了软件开发界几十年设计经验的结晶。...第五章 行为模式 第六章 结论 附录A 词汇表 附录B 图示符号指南 附录C 基本类 参考文献
第5章 继承 · · · · · · (更多) 第一部分 C#面向对象程序设计 第1章 设计模式概述 第2章 C#语言的语法 第3章 用C#编写Windows程序 第4章 在C#中使用类和对象 第5章 继承 第6章 UML图 第7章 C#中的数组、文件...
第5章 行为模式 147 5.1 CHAIN OF RESPONSIBIL ITY(职责链) —对象行为型模式 147 5.2 COMMAND(命令)—对象行为型 模式 154 5.3 INTERPRETER(解释器)—类行为型 模式 162 5.4 ITERATOR(迭代器)—对象行为型 ...
第 3 章 创建型模式 54 3.1 Abstract Factory(抽象工厂)—对象创建型模式 57 3.2 Builder(生成器)—对象创建型模式 633.3 Factory Method(工厂方法)—对象创建型模式 70 3.4 Prototype(原型)—对象创建型...
第5章 对象创建模式 命名空间模式 声明依赖关系 私有属性和方法 模块模式 沙箱模式 静态成员 对象常量 链模式 method()方法 小结 第6章 代码复用模式 传统与现代继承模式的比较 使用类...
第5章 行为模式 147 5.1 chain of responsibil ity(职责链) —对象行为型模式 147 5.2 command(命令)—对象行为型 模式 154 5.3 interpreter(解释器)—类行为型 模式 162 5.4 iterator(迭代器)—对象...
第5章 行为模式 147 5.1 CHAIN OF RESPONSIBIL ITY(职责链) —对象行为型模式 147 5.2 COMMAND(命令)—对象行为型 模式 154 5.3 INTERPRETER(解释器)—类行为型 模式 162 5.4 ITERATOR(迭代器)—对象行为型 ...
在简单工厂模式中,只提供了一个工厂类,该工厂类处于对产品类进行实例化的中心位置,它知道每一个产品对象的创建细节,并决定何时实例化哪一个产品类。简单工厂模式最大的缺点是当有新产品要加入到系统中时,必须...
第5章 行为模式 147 5.1 CHAIN OF RESPONSIBIL ITY(职责链) —对象行为型模式 147 5.2 COMMAND(命令)—对象行为型 模式 154 5.3 INTERPRETER(解释器)—类行为型 模式 162 5.4 ITERATOR(迭代器)—对象...
第Ⅱ部分 创建模式 第2章 工厂方法模式 什么是工厂方法模式? ActionScript 3.0中的抽象类 工厂方法最小化示例 隐藏产品类 .实例:打印商店管理程序 实例扩展:彩色打印 工厂方法模式中关键的00P概念 ...
第1章使用设计模式创建更好的程序 第2章从ruby起步 第二部分ruby中的模式 第3章使用模板方法变换算法 第4章使用策略替换算法 第5章通过观察器保持协调 第6章使用组合模式将各部分组成整体 第7章通过...
目录: 第一部分 介绍第1章 PHP:设计与管理第二部分 对象第2章 PHP与对象第3章 对象基础第4章 高级特性第5章 对象工具第6章 对象与设计第三部分 模式第7 章 什么是设计模式?为何使用它们第8章 模式原则第9章 生成...