设计模式之对象池模式

设计模式之对象池模式

  • 23中模式之外的新模式

简介

对象池模式就是依赖于内存中的对象池(在应用启动时进行初始化),通过循环使用对象,减少资源初始化、以及销毁的昂贵损耗!典型的例子是:线程池、连接池

类图

对象池

对象池

最佳实践

只有在重复生成对象的操作成为影响性能的关键因素时,才适合进行对象池化,但是若池化带来性能提高并不显著或重要的话,建议放弃对象池化技术。

代码

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
package com.bj.hz.pool;

import java.util.HashMap;
import java.util.Map;

/**
* Created with hzz
* Description:
*
* @author: huangzhe
* @date: 2018-07-19
* @time: 8:41 PM
*/
public abstract class Pool <T>{
private Map<T,ObjectStatus> pool=new HashMap();

public Pool() {
pool.put(create(),new ObjectStatus());
}

public synchronized T checkout(){
for (T t:pool.keySet()){
if (!pool.get(t).isIsuse()){
pool.get(t).setIsuse(true);
return t;
}
}
return null;
}


public synchronized void checkIn(T t){
pool.get(t).setIsuse(false);
}

public abstract T create();

private static class ObjectStatus{
private boolean isuse;

public boolean isIsuse() {
return isuse;
}

public void setIsuse(boolean isuse) {
this.isuse = isuse;
}



}
}
坚持原创技术分享,您的支持将鼓励我继续创作!