单例模式。单例模式。

1.单例模式

  单例模式是程序设计模式中之同一种。是为着确保所有应用中某个实例有还仅发生一个。

  应用场合:开发中有些对象只是需要一个。

  特点:有还仅生一个。

  单例模式分为两种植:

  •   饿汉模式
  •   懒汉模式

1.单例模式

  单例模式是先后设计模式中之一致种植。是为了保一切应用被之一实例有还只来一个。

  应用场合:开发中多少对象就待一个。

  特点:有且只发一个。

  单例模式分为两种植:

  •   饿汉模式
  •   懒汉模式

2.饿汉模式

2.饿汉模式

2.1创办饿汉单例模式

  1.创类Singleton,在近似吃管构造函数设为个人的private,不允外部调用

  2.以类似中调用私有的构造方法,创建实例,并且为此private
static修饰

  3.供一个好取得实例的办法(getInstance()),加上public
static修饰

 1 public class Singleton {
 2     //1.将构造方法私有化,不允许外部直接创建对象
 3     private Singleton(){
 4     }
 5     //2.自己在类的内部创建一个实例,是唯一的,把实例设为static,静态的
 6     private static Singleton instance = new Singleton();
 7     
 8     //3.提供一个获取实例的方法
 9     public static Singleton getInstance() {
10         return instance;
11     }
12 }

 

2.1创立饿汉单例模式

  1.创建类Singleton,在近似吃拿构造函数设为个人的private,不容许外部调用

  2.以类似中调用私有的构造方法,创建实例,并且因此private
static修饰

  3.资一个足抱实例的措施(getInstance()),加上public
static修饰

 1 public class Singleton {
 2     //1.将构造方法私有化,不允许外部直接创建对象
 3     private Singleton(){
 4     }
 5     //2.自己在类的内部创建一个实例,是唯一的,把实例设为static,静态的
 6     private static Singleton instance = new Singleton();
 7     
 8     //3.提供一个获取实例的方法
 9     public static Singleton getInstance() {
10         return instance;
11     }
12 }

 

2.2测试饿汉模式

  使用main方法测试,测试中调用2次getInstance(),比较2不行的目标是否当。

1 public class Test {
2     public static void main(String[] args){
3         //调用singleton的静态实例
4         Singleton s1 = Singleton.getInstance();
5         Singleton s2 = Singleton.getInstance();
6         System.out.println(s1==s2); //相等,为饿汉单例模式
7     }
8 }

 

2.2测试饿汉模式

  使用main方法测试,测试中调用2次getInstance(),比较2涂鸦的靶子是否等于。

1 public class Test {
2     public static void main(String[] args){
3         //调用singleton的静态实例
4         Singleton s1 = Singleton.getInstance();
5         Singleton s2 = Singleton.getInstance();
6         System.out.println(s1==s2); //相等,为饿汉单例模式
7     }
8 }

 

3.懒汉模式

3.懒汉模式

3.1创建懒汉单例模式

  1.创造类Singleton,在看似中管构造函数设为私有的private,不容许外部调用

  2.当接近中调用私有的构造方法,声明一个唯一实例对象,并且为此private
static修饰

  3.供一个得博得实例的办法(getInstance()),加上public
static修饰,并且经过 if 语句子判断实例是否为空,为空则创建一个实例

 

 1 public class Singleton2 {
 2     //1.私有化构造方法
 3     private Singleton2(){
 4 
 5     }
 6     //2.声明类的唯一实例化对象,使用private static修饰
 7     private static Singleton2 instance;
 8 
 9     //3.提供一个获取实例对象的方法,用public static修饰
10     public static Singleton2 getInstance(){
11         //需要判断实例是否为空,为空则创建一个实例,否则返回实例
12         if (instance == null) {
13             instance = new Singleton2();
14         }
15         return instance;
16     }
17 }

 

3.1创造懒汉单例模式

  1.开立类Singleton,在看似吃把构造函数设为私有的private,不允外部调用

  2.当接近中调用私有的构造方法,声明一个唯一实例对象,并且为此private
static修饰

  3.供一个足以赢得实例的办法(getInstance()),加上public
static修饰,并且通过 if 语句判断实例是否也空,为空则创建一个实例

 

 1 public class Singleton2 {
 2     //1.私有化构造方法
 3     private Singleton2(){
 4 
 5     }
 6     //2.声明类的唯一实例化对象,使用private static修饰
 7     private static Singleton2 instance;
 8 
 9     //3.提供一个获取实例对象的方法,用public static修饰
10     public static Singleton2 getInstance(){
11         //需要判断实例是否为空,为空则创建一个实例,否则返回实例
12         if (instance == null) {
13             instance = new Singleton2();
14         }
15         return instance;
16     }
17 }

 

3.2测试懒汉模式

   使用main方法测试,测试中调用2次getInstance(),比较2不行的对象是不是当。

1 public class Test {
2     public static void main(String[] args){
3         //调用singleton2的静态实例
4         Singleton2 s3 = Singleton2.getInstance();
5         Singleton2 s4 = Singleton2.getInstance();
6         System.out.println(s3==s4); //相等,为懒汉单例模式
7     }
8 }

 

3.2测试懒汉模式

   使用main方法测试,测试中调用2次getInstance(),比较2涂鸦的靶子是不是等。

1 public class Test {
2     public static void main(String[] args){
3         //调用singleton2的静态实例
4         Singleton2 s3 = Singleton2.getInstance();
5         Singleton2 s4 = Singleton2.getInstance();
6         System.out.println(s3==s4); //相等,为懒汉单例模式
7     }
8 }

 

4.区别

  1.饿汉模式,只要类加载了不畏见面创造一个唯一的实例,而懒汉模式只是以看似吃声称一个唯一的对象实例,只有在首先破调动用
getIntance() 方法时才会创一个实例,后面再调用就不怕不见面再次创实例了。

  2.饿汉模式之特点是加载类时于缓慢,但是运行时得对象的进度较快,并且线程安全。

  3.懒汉模式之特征是加载类时较快,但是运行时取得对象的快比较慢,并且线程不安全。

 

4.区别

  1.饿汉模式,只要类加载了便会见创造一个唯一的实例,而懒汉模式只是在看似中声明一个唯一的靶子实例,只有在首先涂鸦调动用
getIntance() 方法时才会创一个实例,后面更调用就即未会见还创实例了。

  2.饿汉模式之表征是加载类时比慢,但是运行时得到对象的速较快,并且线程安全。

  3.懒汉模式之风味是加载类时较快,但是运行时得到对象的快慢较缓慢,并且线程不安全。

 

相关文章

admin

网站地图xml地图