个人blog 此篇博文地址:http://www.sanyinchenblog.com/?p=233
单例模式:
确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。
demo(https://github.com/sanyinchen/UMLDemo)
通用视图(饿汉式):
单例通用代码模板:
public class Singleton{
private static final Singleton singleton=new Singleton();
private Singleton()
{
}
public static Singleton getSingleton()
{
return singleton;
}
public static void soSomthing()
{
}
}
书中举了一个臣子朝拜皇上的例子:皇帝每天要上朝接待臣子,处理政务,臣子每天要叩拜皇上。而皇帝就那个唯一的单例。
Minister类:
package com.sanyinchen.singleon;
public class Emperor {
private static Emperor emperor = null;
private Emperor() {
}
public synchronized static Emperor getInstance() {
if (emperor == null) {
emperor = new Emperor();
}
return emperor;
}
public void say() {
System.out.println("我就是皇帝啦啦啦....");
}
}
Emperor类:package com.sanyinchen.singleon;
public class Emperor {
private static Emperor emperor = null;
private Emperor() {
}
public synchronized static Emperor getInstance() {
if (emperor == null) {
emperor = new Emperor();
}
return emperor;
}
public void say() {
System.out.println("我就是皇帝啦啦啦....");
}
}
运行结果:
我就是皇帝啦啦啦.... 我就是皇帝啦啦啦.... 我就是皇帝啦啦啦.... 我就是皇帝啦啦啦.... 我就是皇帝啦啦啦.... 我就是皇帝啦啦啦.... 我就是皇帝啦啦啦.... 我就是皇帝啦啦啦.... 我就是皇帝啦啦啦.... 我就是皇帝啦啦啦....上面的单例模式为懒汉式,还有一种懒汉式,则是在定义的时候直接进行初始化,返回时直接返回此对象。
单例模式的优点:
(1)减少内存开支
(2)减少系统性能开销
(3)避免对资源的多重占用
(4)优化和共享资源
单例模式的缺点:
(1)单例模式一般没有接口,扩展很难
(2)单例模式对策是不利
(3) 单例模式与单一职责原则有冲突
原文:http://blog.csdn.net/lovechangshu/article/details/41488269