聚沙成塔

单例模式在-I中的应用

上一篇 / 下一篇  2013-04-30 11:53:43 / 个人分类:单元测试

底层支持平台有很多的功能实现都是单例模式。例如,数据库连接池、线程池、HTTP连接池、FTP连接池、TCP连接池等等。因此,在测试的过程中,常常需要先产生一个实例对象,例如DBConnectionManager.getInstance();TCPServiceImpl.getInstance()。常见的单例模式有三种:饿汉式、懒汉式、登记式。

//饿汉式

Class Singleton {

Private static final Singleton instance = new Signleton();

Public Singleton() {

}

Public static Singleton getInstance() {

    Return instance();

}

}

//懒汉式

Class Singleton{

Private static final Singleton instance;

Public Singleton() {

}

Public  static Singleton getInstance() {

If (instance==null) {

   Instance = new Singleton();

}

Return instance;

}

//登记式

1  importjava.util.HashMap;
 2importjava.util.Map;
 3//登记式单例类.
 4//类似Spring里面的方法,将类名注册,下次从里面直接获取。
 5publicclassSingleton3 {
 6    privatestaticMap<String,Singleton3> map =newHashMap<String,Singleton3>();
 7    static{
 8         Singleton3 single =newSingleton3();
 9         map.put(single.getClass().getName(), single);
10     }
11    //保护的默认构造子
12    protectedSingleton3(){}
13    //静态工厂方法,返还此类惟一的实例
14    publicstaticSingleton3 getInstance(String name) {
15        if(name ==null) {
16             name = Singleton3.class.getName();
17             System.out.println("name == null"+"--->name="+name);
18         }
19        if(map.get(name) ==null) {
20            try{
21                 map.put(name, (Singleton3) Class.forName(name).newInstance());
22             }catch(InstantiationException e) {
23                 e.printStackTrace();
24             }catch(IllegalAccessException e) {
25                 e.printStackTrace();
26             }catch(ClassNotFoundException e) {
27                 e.printStackTrace();
28             }
29         }
30        returnmap.get(name);
31     }
32    //一个示意性的商业方法
33    publicString about() {   
34        return"Hello, I am RegSingleton.";   
35     }   
36    publicstaticvoidmain(String[] args) {
37         Singleton3 single3 = Singleton3.getInstance(null);
38         System.out.println(single3.about());
39     }
40}

 

参考http://www.cnblogs.com/whgw/archive/2011/10/05/2199535.html


TAG: 单元测试

 

评分:0

我来说两句

Open Toolbar