|
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
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
|
package test;class CacheImmutale{ private static int MAX_SIZE=10; private static CacheImmutale[] cache=new CacheImmutale[MAX_SIZE]; private static int pos=0; private final String name; private CacheImmutale(String name) { this.name=name; } public String getName() { return name; } public static CacheImmutale valueOf(String name) { for(int i=0;i<MAX_SIZE;i++) { if(cache[i]!=null&&cache[i].getName().equals(name)); { return cache[i]; } } if(pos==MAX_SIZE) { cache[0]=new CacheImmutale(name); pos=1; } else { cache[pos++]=new CacheImmutale(name); } return cache[pos-1]; } public boolean equals(Object obj) { if(this==obj) { return true; } if(obj!=null&&obj.getClass()==CacheImmutale.class) { CacheImmutale ci=(CacheImmutale)obj; return name.equals(ci.getName()); } return false; } public int hashCode() { return name.hashCode(); }}public class JTest{ public static void main(String[] args) { CacheImmutale c1=CacheImmutale.valueOf("Hello"); CacheImmutale c2=CacheImmutale.valueOf("Hello"); System.out.println(c1==c2); }} |
实现一个缓存实例的不可变类
本文介绍了一个简单的缓存池实现方式,通过使用不可变对象来减少内存分配和提高对象复用效率。该方案采用固定大小的缓存数组存储已创建的对象,并通过`valueOf`方法检查是否已经存在相同名称的对象,如果不存在,则创建新对象并放入缓存中。

被折叠的 条评论
为什么被折叠?



