设计模式:解决某一类问题行之有效的方法;
饿汉式单例模式,比较安全,无多线程问题
懒汉式单例模式,会有多线程访问问题
设计模式主要强调的是思想,不是代码,就像建房子需要现有地基,然后需要房梁,需要如何建造一个框架,设计模式就是我们要编程过程中解决某类问题可以采用的思路和方法。
设计模式是有4个小伙伴创建的,主要有23种设计模式,当然不止23种,不同的问题可以自己创建不同的设计模式。
单例设计模式:
保证对象唯一性产生的设计模式;
当多个对象需要调用一个类中相同数据时,因为初始化内容相同,就不需要每个对象分别创建并且初始化,这样会浪费内存。
我们可以在类中创建对象,并且提供一个公共的访问方式;
步骤:
(1)私有化构造方法
(2)在类中创建对象,并使用static修饰
(3)创建公共访问方法,返回类中创建的对象,因为main方法中不能创建对象,需要将公共访问方式设置为静态,使用类.方法名来调用。
1
2
3
4
5
6
7
8
|
//二、创建本类对象 ,需要私有化对象,防止直接调用该对象 private static Person person= new Person(); //一、私有化构造方法 private Person(){} //三、创建公共访问方式 ,使用方法作为访问方式是因为可以保证可控性 public static Person getInstance(){ return person; } |
饿汉式单例模式,加载对象时便创建了本类对象
1
2
3
4
5
6
7
8
9
10
11
12
|
class Singleton1 { //2、创建本类对象 private static Singleton1 singleton1= new Singleton1(); //1、私有化构造方法 private Singleton1(){}; //3、提供对外的公共访问方式 public static Singleton1 getInstance() { return singleton1; } } |
懒汉式单例模式,调用访问方法时再创建对象,有称为单例的延迟加载方式
1
2
3
4
5
6
7
8
9
10
11
12
13
|
class Singleton2{ //2、创建本类对象 private static Singleton2 singleton2= null ; //1、私有化构造方法 private Singleton2(){}; //3、提供对外的公共访问方式 public static Singleton2 getInstance(){ if (singleton2== null ){ singleton2= new Singleton2(); } return singleton2; } } |