设计模式(一) ---- 单例模式

概念:一套被反复使用的,多数人知晓的,通过分类,编目的代码设计经验的总结安全

优势: 都是优秀的使用案例函数

可提升代码的重用性工具

使得代码易于理解spa

保证代码的可靠性线程

单例模式

引入:

    现实生活中有些场景中的对象只能是一个,如:地球,一个国家的皇帝,配偶等等.项目中也会有这样的场景:配置文件,线程池,工具类,日志等等.设计

单例模式就是保证整个项目(应用)中的某个实例有且只有一个日志

为何用单例模式?对象

    使用单例模式是为了不一些问题:如配置文件的读取,当有多个实例去读取时,当中的某一个修改了文件就会使得其余实例读取的内容不一致.例如线程池多个实例会过分的占用资源等等.资源

单例模式经常使用的(基本的)有两种:饿汉式和懒汉式get

饿汉式

//饿汉式

public class Sington1 {

//私有化构造函数

private Sington1(){

 

}

//建立对象

static Sington1 sington1 = new Sington1();

//提供访问方法

public static Sington1 getInstance(){

return sington1;

}

}

 

懒汉式

//懒汉式

public class Sington2 {

private Sington2(){

 

}

private static Sington2 sington2 = null;

public static synchronized Sington2 getInstance(){

if (sington2 == null) {

sington2 = new Sington2();

}

return sington2;

}

}

 

线程不安全:当有多个线程同时调用实例的获取方法,他们访问时实例是没有的,因此都能进入if模块中建立实例,这时就会建立多个实例

总结

经过上面的代码能够看出,单例模式类编写的步骤:

1. 私有化构造方法,不容许外界随意使用

2. 建立一个对象,将其私有化,不容许外界直接访问

3. 提供一个访问对象的方法

 

两种方式的区别:

饿汉式在类加载的时候就建立了对象,全部加载的时候相对慢些;懒汉式在使用的时候才开始建立对象,这时它比较慢些.饿汉式是线程安全的,懒汉式是线程不安全的,想要使其安全能够加上关键字synchronized

相关文章
相关标签/搜索