java语言 百分网手机站

java设计模式:多例模式

时间:2020-09-09 10:44:52 java语言 我要投稿

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的设计模式编程之解释器模式的运用11-23

Java的设计模式编程中责任链模式的运用的实例讲解12-01

该怎么使用Java设计模式编程中的OCP开闭原则?11-23

简单讲解Java的Future编程模式方案11-25

Java开发策略模式的简单应用实现方法11-30

PHP中的设计模式详解08-15

C语言编程中使用设计模式中的原型模式的讲解11-19

photoshop柔光模式和叠加模式的运用教程11-15

海关通关作业新模式11-12