zoukankan      html  css  js  c++  java
  • 单例设计模式之初认识

     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 }

  • 相关阅读:
    python之enumerate
    Python中的集合set
    SGU 分类
    太空飞行计划 最大权闭合图
    1.飞行员配对 二分图匹配(输出方案)/最大流斩
    poj1149最大流经典构图神题
    hdu1569 方格取数 求最大点权独立集
    最大独立集 最小点覆盖 最小边覆盖 最小路径覆盖 最大团
    hdu3491最小割转最大流+拆点
    hdu3987,最小割时求最少割边数
  • 原文地址:https://www.cnblogs.com/zui-ai-java/p/14342578.html
Copyright © 2011-2022 走看看