设计模式之一——单例模式
是在大量的实践和理论中总结出来的并优化之后的一个代码结构,编程风格,解决问题的思考方式
概念:一个类只能创建一个实例化对象(将构造器进行私有化(Private)来保证只有一个实例,此时外部无法调用构造器来创建对象提供static 修饰)
饿汉式
class Banl{
//1. 私有化构造器
private Bank(){}
//2. 内部需要提供一个当前类的实例
private static Bank bank = new Bank();
//3. 提供一个公共静态方法,返回当前类的对象
public static Bank getIntstance(){
return bank;
}
}
懒汉式
class Order(){
//1. 构造器私有化
private Order(){}
//2. 在类的内部提供上一个当前类的实例
private static Order order = null;
//3. 提供一个公共静态方法,返回当前类的对象
public static Order getInstance(){
if(order == null){
order = new Order();
}
return order;
}
}
懒汉式&饿汉式的区别:
懒汉式:是一种需要的时候才创建对象的设计模式,优点是延迟加载;缺点是应用同步,需要维护线程安全
饿汉式:天然是线程安全的(多线程),加载早,导入对象在内存中存在时间过长,占用内存
其最大的区别是看其什么时候创建对象,如果一开始就创建实例对象,则是饿汉式。
单例模式的优点:
单例模式只创建了一个类的实例,减少了系统性能的开销
单例的使用场景:
网站计数器,数据库连接池,配置文件类,Application,Windows的资源管理器