}
}
3、注册式
复制代码
public static foo getInstance(String name) {
if(name == null) {
name = foo .class.getName();
System.out.println("name == null"+"--->name="+name);
}
if(map.get(name) == null) {
try {
map.put(name, (foo ) Class.forName(name).newInstance());
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
return map.get(name);
}
第一种和第二种方式区别在于创建时机的差异,而第三种则是如何创建有区别。
最后,问几个问题:
1、android还有哪些其他的单例模式
2、launcher mode中有没有单例模式的实现
3、单例模式的拓展中,数据库连接池属于哪种方式的变异(衍生).
4、三种方式的单例模式的优缺点有哪些?一般用途区别在哪?。










