- 浏览: 67979 次
- 性别:
- 来自: 上海
最新评论
-
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 2294各位,这些笔记已经生成了pdf,如果有兴趣的可以在本文末尾下载 ... -
MVC模式【行为模式第十三篇】
2009-10-23 23:36 1517MVC模式:就是模型-视 ... -
状态(State Pattern)模式【行为模式第十二篇】
2009-10-23 23:35 1371状态(State Pattern)模式:又称为状态对象模式,状 ... -
责任链(Chain of Responsibility)模式【行为模式第十一篇】
2009-10-23 23:33 1256责任链(Chain of Responsibility)模式 ... -
模板方法(Template Method)模式【行为模式第十篇】
2009-10-23 23:32 1229模板方法(Template Method)模式 模板方法模式 ... -
命令(Command)模式【行为模式第九篇】
2009-10-23 23:31 1417命令(Command)模式: ... -
解释器(Interpreter)模式【行为模式第八篇】
2009-10-23 23:29 1111解释器(Interpreter)模 ... -
观察者(Observer)模式【行为模式第七篇】
2009-10-23 23:28 1280观察者(Observer)模式 ... -
访问者(Visitor)模式【行为模式第六篇】
2009-10-23 23:26 1135访问者(Visitor)模式: 访问者模式是对象的行为模式。 ... -
迭代子(Iterator)模式【行为模式第五篇】
2009-10-23 23:25 1536迭代子(Iterator)模式: 迭代子模式又叫游标(Cur ... -
调停者(Mediator)模式 【行为模式第四篇】
2009-10-23 23:23 2677调停者(Mediator)模式 调停者模式是对象的行为模式。 ... -
策略(Strategy)模式 【行为模式第三篇】
2009-10-23 23:22 1542策略(Strategy)模式 策略模式属于对象的行为模式。其 ... -
不变(Immutable)模式【行为模式第二篇】
2009-10-23 23:21 1704不变(Immutable)模式 一个对象的状态在对象被创建之 ... -
备忘录(Memento Pattern)模式 【行为模式第一篇】
2009-10-23 23:19 1995备忘录(Memento Pattern)模式 备忘录模式又叫 ... -
适配器模式举例【结构模式第八篇】
2009-10-23 23:17 1056XMLProperties与适配器模式举例: //---- ... -
适配器模式【结构模式第六篇】
2009-10-23 23:12 1209适配器模式(Adapter Pattern)(另称-变压器模式 ... -
桥梁(Bridge)模式【结构模式第五篇】
2009-10-23 23:09 1369桥梁(Bridge)模式: 一、桥梁模式的用意 桥梁模式 ... -
门面(Facade)模式【结构模式第四篇】
2009-10-23 23:08 1241门面(Facade)模式: 是对象的结构模式。外部与一个子系 ... -
亨元(Flyweight Pattern)模式【结构模式第三篇】
2009-10-23 23:07 1189亨元(Flyweight Pattern) ... -
合成(Composite)模型模式【结构模式第二篇】
2009-10-23 23:04 1400合成(Composite)模型模式: 属于对象的结构模式,有 ...
相关推荐
"单例多例模式" 单例多例模式是软件设计中的一种重要概念,它们之间的区别和选择对系统的性能和稳定性有着重要的影响。本文将详细讲解单例多例模式的定义、产生方式、使用场景和选择标准。 一、什么是单例多例? ...
创建型模式作为设计模式的五种主要类别之一,它主要关注的是对象的创建过程,通过抽象和封装创建过程中的变化点,使得系统能够更加灵活地应对未来的变化。 创建型模式包括多种不同的模式,例如工厂模式、单态模式、...
压缩包中的“创建模式”文件可能包含了对以上各种模式的详细解释、示例代码以及实际应用案例,对于理解并掌握这些创建型设计模式有着重要的参考价值。通过学习和实践,开发者可以更好地设计出可扩展、易维护的系统。
4. 线程安全措施:如使用synchronized关键字或Java 5后的`java.util.concurrent`包中的`AtomicReference`来保证多线程环境下的正确性。 通过这种方式,游戏开发者可以确保在任何情况下,角色创建都是有序进行的,...
4. 多例模式(Multiton Pattern):与单例模式相似,但允许多个实例存在。 5. 工厂方法模式(Factory Method Pattern):定义了一个创建对象的接口,但让子类决定实例化哪一个类。 6. 抽象工厂模式(Abstract ...
**单例模式(Singleton)**是软件设计模式中的一种创建型模式,它的核心思想是确保一个类只有一个实例,并提供一个全局访问点。这种模式在很多场景下非常有用,例如管理共享资源、配置对象或者数据库连接等。单例...
Singleton模式是设计模式中的一种创建型模式,它在软件工程中扮演着重要的角色。这个模式的主要目的是确保一个类只有一个实例,并提供一个全局访问点来获取这个唯一的实例。Singleton模式的应用场景通常涉及到系统...
第5章 迪米特法则 5.1 迪米特法则的定义 5.2 我的知识你知道得越少越好 5.3 最佳实践 第6章 开闭原则 6.1 开闭原则的定义 6.2 开闭原则的庐山真面目 6.3 为什么要采用开闭原则 6.4 如何使用开闭原则 6.5 最佳实践 第...
例如,一个Web应用可能采用MVC模式组织结构,使用单例模式管理数据库连接,同时通过工厂模式创建不同类型的业务对象,而代理模式可以用来添加事务处理等额外功能。通过学习和熟练掌握这些设计模式,开发者能够更好地...
5. 原型模式:通过复制已有对象来创建新对象,减少创建新对象的成本。 接下来是结构型模式,它们关注如何组合现有的类和对象以创建更大的结构。结构型模式包括适配器模式、装饰器模式、代理模式、桥接模式、组合...
- **工厂模式**(第17页):这种模式提供了一个创建对象的接口,但允许子类决定实例化哪一个类。它使得一个类的实例化延迟到其子类。通过示例代码展示了工厂模式的基本工作原理。 - **抽象工厂模式**(第26页):这...
建造模式主要有两种实现方式,第一种方式是使用Director类来控制创建过程,第二种方式是使用Builder类来控制创建过程。 Observer模式 Observer模式是一种行为型设计模式,主要目的是实现对象之间的松耦合。...
设计模式分为三大类:创建型模式、结构型模式和行为型模式。每种模式都针对不同的设计挑战,旨在优化代码结构,改善类和对象之间的关系。 1. 创建型模式: - 单例模式:确保一个类只有一个实例,并提供全局访问点...
### 第5章:工厂方法模式(Factory Method Pattern) #### 概念: 工厂方法模式定义了一个创建对象的接口,但让子类决定实例化哪一个类。工厂方法让类的实例化推迟到子类。 #### 适用场景: - 一个类不知道它所...
- **懒汉式**:在第一次使用时才创建实例。 - **饿汉式**:在类加载时就创建实例。 单例模式的应用场景包括管理数据库连接、日志对象等资源。 #### 2. 工厂方法模式 (Factory Method Pattern) 工厂方法模式是一种...
观察者模式定义了对象间的一种一对多依赖关系,当一个对象的状态发生改变时,所有依赖于它的对象都会得到通知并被自动更新。C#中的事件和委托机制就是观察者模式的实现。 七、策略模式(Strategy) 策略模式定义了...
标题"根据不同的模式创建单实例应用程序(3kb)"暗示我们将探讨几种实现单例模式的方法,可能是通过C++语言来完成,文件`SingleInstance.cpp`和`SingleInstance.h`可能包含了这些实现的源代码。 1. **经典单例模式**...