考试报名信息,云课堂欢迎您!
当前位置:首页 > > 考试 > > 计算机类 > 内容页

java设计模式:多例模式

2021-04-25 07:10:01计算机类访问手机版187

  java设计模式:多例模式

  导语:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。下面我们来看看多例模式,希望对大家有所帮助。

  多例设计模式:单例+缓存

  ★ 缓存在单例中的使用

  缓存在编程中使用很频繁,有着非常重要的作用,它能够帮助程序实现以空间换取时间,通常被设计成整个应用程序所共享的一个空间,

  现要求实现一个用缓存存放单例对象的类。

  说明:该缓存中可以存放多个该类对象,每个对象以一个key值标识,key值相同时所访问的是同一个单例对象。

  类对象

1234567891011121314package cn.hncu.pattern.multi; public class A private int value; public int getValue return value; public void setValueint value this.value = value;

  实现方式1:key值由用户指定

12345678910111213141516171819202122232425262728package 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 getInstanceString key //3先到容器中拿 A a = map.getkey; //4如果没拿到,则创建一个新的放入容器中,并返回该新创建的对象。 // 如果拿到,则直接返回 ifa==null a = new A; map.putkey, a; return a; </string,></string,>

  实现方式2:key值由代码内部自己决定

1234567891011121314151617181920212223242526272829package 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.getnum; ifa==null a = new A; map.putnum, a; num++; ifnum>MAX //采用某些算法来处理。我们这里简单处理:强行把最早放出去的那个给新用户 num=1; return a; </integer,></integer,>