java设计模式:多例模式
导语:Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。下面我们来看看多例模式,希望对大家有所帮助。
多例设计模式:单例+缓存
★ 缓存在单例中的使用
缓存在编程中使用很频繁,有着非常重要的作用,它能够帮助程序实现以空间换取时间,通常被设计成整个应用程序所共享的一个空间,
现要求实现一个用缓存存放单例对象的类。
说明:该缓存中可以存放多个该类对象,每个对象以一个key值标识,key值相同时所访问的是同一个单例对象。
类对象
1234567891011121314 | package i; public class A { private int value; public int getValue() { return value; } public void setValue( int value) { this e = value; } } |
实现方式1:key值由用户指定
12345678910111213141516171819202122232425262728 | package i; import Map; import ; //该版本的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 = (key); //4如果没拿到,则创建一个新的放入容器中,并返回该新创建的对象。 // 如果拿到,则直接返回 if (a== null ){ a = new A(); (key, a); } return a; } } </string,></string,> |
实现方式2:key值由代码内部自己决定
1234567891011121314151617181920212223242526272829 | package i; import Map; import ; //该版本的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 = (num); if (a== null ){ a = new A(); (num, a); } num++; if (num>MAX){ //采用某些算法来处理。我们这里简单处理:强行把最早放出去的那个给新用户 num= 1 ; } return a; } } </integer,></integer,> |
-
Java中final关键字用法的讲解
1.finalvariablefinalvariable就是一个常量,一旦被初始化就不可以被改变。classTest1{finaldoublePI=3.14;//常量的名称最好大写publicTest1(){PI=3.14;}voidtest(){tln("PIis:"+PI);}publicstaticvoidmain(String[]args){Test1t=newTest1();();}}输出:PIis:3.14...
-
Java开发岗位面试题
为帮助参加Java开发岗位面试的朋友们做好准备,以下是本站小编搜索整理的一份Java集合面试问题40个【附答案】,供参考练习,希望对大家有所帮助!想了解更多相关信息请持续关注我们应届毕业生考试网!一、Java基础1、String类为什么是final的。2、HashMap的源码,实现原...
-
讲述java中enum的用法
本文实例讲述了java中enum的用法。分享给大家供大家参考。具体分析如下:1.基本用法复制代码代码如下:enumDay{SUNDAY,MONDAY,TUESDAY,WENDSDAY,THURSDAY,FRIDAY,SATURDAY;}枚举是常量,所以应该用大写。2.枚举是对象枚举隐含地继承了,所以它具有的.属性和方法。遍...
-
2017年计算机java提分练习题
学习必须如蜜蜂一样,采过许多花,这才能酿出蜜来。以下是小编为大家搜索整理的2017年计算机java提分练习题,希望对大家有所帮助!更多精彩内容请及时关注我们应届毕业生考试网!1).下列关于for循环和while循环的说法中哪个是正确的?e循环能实现的操作,for循环都能实现...