• 单例设计模式之初认识


     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 }

  • 相关阅读:
    动态加载js文件以支持跨域脚本
    获取页面宽高的一些代码
    根据dom对象或其id获取对象位置的代码
    Exchange2007用户用户全部访问权限授权命令及验证脚本
    frame页面地址转向跨域解决方法
    过滤掉多余的重复记录的SQL语句
    读写cookie的方法
    识别移动设备脚本
    winrar打包部署程序
    自己动手搭建MinGW
  • 原文地址:https://www.cnblogs.com/zui-ai-java/p/14342578.html
Copyright © 2020-2023  润新知