设计模式就是一种思维,一种思考方式。
编程的语言只是工具,思维才是王道。
GOf :group of four 是国外的4个大牛总结出来的代码的一种思维方式、
今天先学习一样创建者模式的单列模式,它的核心作用是保证一个类只有一个对象,并且提供一个访问实列的全局访问点。
常见的应用背景。 window的任务管理器,回收站,数据库的连接池,web里面的servelet里面的application对象也是一个单列...
单列模式的作用;节省资源,提供内存的利用率。
常见的五种单列模式
1.饿汉式 :线程 安全.调用效率高,但是不能延迟加载
2懒汉式: 线程安全, 调用效率不高,但是可以延迟加载
3双重检测锁式 (....)
4静态内部内式 线程安全, 调用效率不高,但是可以延迟加载
5枚举单列 :线程 安全.调用效率高,不能延迟加载
先来看一个饿汉式和懒汉式吧
//饿汉式
public class SigletonDemo
{
//先new 一个私有的对象 加载类的时候 立即创建这个对象是线程安全的
private static SingletonDemo instance=new SingletonDemo();
//构造器私有化
private SingletonDemo(){
}
//获取对象 方法不需要同步 调用效率高
public static SingleDemo getInstance(){
return instance;
}
}
//懒汉式 延迟加载
public class SigletonDemo
{
//不去创建 默认为空
private static SingletonDemo instance;
//构造器私有化
private SingletonDemo(){
}
//获取对象 方法需要同步 调用效率低 需要用的时候才调用节省了资源
//synchronized 如果不同步的话多线程容易造成多个对象的创建
public static synchronized SingleDemo getInstance(){
if(instance==null){
instance=new SingltonDemo()
}
return instance;
}
}
什么时候用饿汉式或者懒汉式呢
如果一个类的创建的代价比较高的话,推荐使用懒汉式(饿汉式,无论你是否使用,类创建的时候都会直接创建一个对象,内存的利用率不高)。
如果类的调用的效率比较频繁,建议使用饿汉式(懒汉式调用效率比较低,因为同步的原因会造成线程的等待)。
总而言之,饿汉式和懒汉式各有千秋,关键看你的需要了。
今天比较累,就不深入研究了,以后有时间好好总结。