单例设计模式之初认识

 1 package day1_28;
 2 import org.junit.Test;
 3 
 4 /**
 5  *单例设计模式
 6  * 1.1是什么
 7  * 就是采取一定的方法保证在整个的软件系统中,对某个类只能存在一个对象实例
 8  * 1.2 好处
 9  * 由于单例模式只生成一个实例,减少了系统性能的开销,当一个对象的产生需要比较多的资源
10  * 时,如读取配置、产生其他依赖对象时,则可以通过在应用启动时产生一个单例对象,然后永久
11  * 驻留内存的方式来解决
12  *
13  * 2.如何实现?
14  * 饿汉式 vs 懒汉式
15  *
16  * 3.区别
17  *  饿汉式:(可以看看Runtime源码)
18  *      坏处:提前把对象就创建好了,但是有可能很久才会用,或者一直也用不上,就导致对象加载时间过长
19  *      好处:线程安全的
20  *  懒汉式:
21  *      坏处:目前的写法是线程不安全的,---> 多线程内容时,再修改
22  *      好处:延迟对象的创建,什么时候用就什么时候创建
23  *
24  */
25 public class SingletonTest {
26     @Test
27     public void test1(){
28         Bank bank1 = Bank.getInstance();
29         Bank bank2 = Bank.getInstance();
30         System.out.println(bank1);
31         System.out.println(bank2);
32         System.out.println(bank2 == bank1);
33     }
34 
35     @Test
36     public void test2(){
37         Order Order1 = Order.getInstance();
38         Order Order2 = Order.getInstance();
39         System.out.println(Order1);
40         System.out.println(Order2);
41         System.out.println(Order2 == Order2);
42     }
43 }
44 
45 //饿汉式(不管你用不用提前就创建好对象)
46 class Bank{
47     //2.内部创建类的对象
48     //4.要求此对象也必须声明为静态的(为了步骤3调用)
49     private static Bank instance = new Bank();
50 
51     //1.私有化类的构造器
52     private Bank() {
53     }
54 
55     //3.提供公共的静态方法,返回类的对象
56     public static Bank getInstance() {
57         return instance;
58     }
59 }
60 
61 //懒汉式(用的时候才创建对象)
62 class Order{
63 
64     private static Order instance = null;
65 
66     private Order(){
67     }
68 
69     public static Order getInstance() {
70         if (instance == null) {
71             instance = new Order();
72         }
73         return instance;
74     }
75 }

原文地址:https://www.cnblogs.com/zui-ai-java/p/14342578.html