java设计模式:多例模式
导语:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。下面我们来看看多例模式,希望对大家有所帮助。
多例设计模式:单例+缓存
★ 缓存在单例中的'使用
缓存在编程中使用很频繁,有着非常重要的作用,它能够帮助程序实现以空间换取时间,通常被设计成整个应用程序所共享的一个空间,
现要求实现一个用缓存存放单例对象的类。
说明:该缓存中可以存放多个该类对象,每个对象以一个key值标识,key值相同时所访问的是同一个单例对象。
类对象
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | package cn.hncu.pattern.multi; public class A { private int value; public int getValue() { return value; } public void setValue( int value) { this .value = value; } } |
实现方式1:key值由用户指定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | package cn.hncu.pattern.multi; import java.util.HashMap; import java.util.Map; //该版本的key由用户来指定(如servlet缓存中的url,由用户在请求时发送过来)。池中的对象个数没控制 public class MyBuffer { //1创建一个存放多个对象的容器----单例 private static Map<string, a= "" > map = new HashMap<string, a= "" >(); //2给外面提供一个从容器获取对象的方法 public static A getInstance(String key){ //3先到容器中拿 A a = map.get(key); //4如果没拿到,则创建一个新的放入容器中,并返回该新创建的对象。 // 如果拿到,则直接返回 if (a== null ){ a = new A(); map.put(key, a); } return a; } } </string,></string,> |
实现方式2:key值由代码内部自己决定
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | package cn.hncu.pattern.multi; import java.util.HashMap; import java.util.Map; //该版本的key由当前缓存类来维护。能够控制缓存中对象的个数 public class MyBuffer2 { //定义一个单例的池 private static Map<integer, a= "" > map = new HashMap<integer, a= "" >(); private static int num= 1 ; private static final int MAX= 5 ; public static A getInstance(){ A a = map.get(num); if (a== null ){ a = new A(); map.put(num, a); } num++; if (num>MAX){ //采用某些算法来处理。我们这里简单处理:强行把最早放出去的那个给新用户 num= 1 ; } return a; } } </integer,></integer,> |
【java设计模式:多例模式】相关文章:
JAVA设计模式之单例模式11-23
Java的设计模式编程中责任链模式的运用的实例讲解12-01
该怎么使用Java设计模式编程中的OCP开闭原则?11-23
Java开发策略模式的简单应用实现方法11-30
PHP中的设计模式详解08-15
海关通关作业新模式11-12