设计模式
- 是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。
- 使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
应用场合
-
有些对象只需要一个就足够了如古代皇帝、老婆作用
-
配置文件、工具类、线程池、缓存、日志对象等
- 如果创造出多个实例,就会导致许多问题,比如占用过多资源,不一致的结果等
-
为了保证某一个类不管怎么创建,都只在堆内存中开辟一块空间
-
保证整个应用程序中某个实例有且只有一个
单例模式完整设计思想
- 在本类中创建一个对象:SingleDemos=new SingleDemo();
- 私有化构造方法
- 提供一个公共的方法,让其他类也可以得到一个对象
单例模式的类型
- 饿汉模式
- 懒汉模式
饿汉式
步骤
将构造方法私有化,不允许外部直接创建对象
public class Singleton {
//将构造方法私有化,不允许外部直接创建对象
private Singleton() {}
}
创建类的唯一实例,并静态私有化—private,static修饰
public class Singleton {
//将构造方法私有化,不允许外部直接创建对象
private Singleton() {}
//创建类的唯一实例
private static Singleton instance=new Singleton();
}
提供一个获取实例的静态方法—public,static修饰
public class Singleton {
//将构造方法私有化,不允许外部直接创建对象
private Singleton() {}
//创建类的唯一实例
private static Singleton instance=new Singleton();
//提供一个获取实例的静态方法
public static Singleton getinstance() {
return instance;
}
}
获取对象的方法:
Singleton S=Singleton.getinstance();
懒汉式
步骤
-
将构造方法私有化,不允许外部直接创建对象
-
创建类的唯一实例,并静态私有化—private,static修饰
-
提供一个获取实例的静态方法—public,static修饰
public class Singleton {
//将构造方法私有化,不允许外部直接创建对象
private Singleton() {}
//声名类的唯一实例
private static Singleton instance;
//提供一个获取实例的静态方法
public static Singleton getinstance() {
//判断对象是否已经存在
if(instance==null) {
//不存在则创建对象
instance=new Singleton();
}
//返回对象
return instance;
}
}
三:懒汉模式和饿汉模式的区别:
- 饿汉模式的特点是加载类时比较慢,但运行时获取对象的速度比较快,线程安全的
- 懒汉模式的特点是加载类时比较快,但运行时获取对象的速度比较慢,线程不安全