zoukankan      html  css  js  c++  java
  • 单例模式饿汉式和懒汉式的实现

    单例模式的优点:

    只生成一个实例,减少了系统内存的开销

    单例的饿汉式实现

    优点:多线程时是线程安全的

    缺点:对象加载时间过长

     1 /*单例设计模式 某个类只能存在一个对象实例
     2 1.私有化类的构造器
     3 2.内部创建类的静态的对象
     4 3.提供类的静态的方法
     5 */
     6 public class test {
     7 public static void main(String[] args)
     8 {
     9     Bank bank1=Bank.getInstance();
    10     Bank bank2=Bank.getInstance();
    11     System.out.println(bank1==bank2);//true
    12 }
    13 
    14 }
    15 
    16 class Bank
    17 {
    18     //私有化类的构造器
    19     private Bank()
    20     {
    21         
    22     }
    23     //内部创建类的对象,对象也必须是静态的
    24     private static Bank instance=new Bank();
    25     //提供公共的静态的方法,返回类的对象
    26     public static Bank getInstance()
    27     {//建立对象需要类的构造器,但是被私有了,调用类返回对象的方法企图得到对象,但是需要先建立对象
    28     //这里将方法变成静态,就可以通过类直接调用
    29         return instance;//静态的方法只能调用静态的结构,所以创建的对象需为静态
    30     }
    31 }

    单例的懒汉式实现

    优点:延迟对象的加载

    缺点:目前的写法是线程不安全的,在多线程情况下需要改进

     1 /*单例设计模式 某个类只能存在一个对象实例
     2 1.私有化类的构造器
     3 2.声明当前类的静态对象,没有初始化
     4 3.声明public,static的返回当前类对象的方法
     5 */
     6 public class test {
     7 public static void main(String[] args)
     8 {
     9     Order order=Order.getInstance();
    10 }
    11 
    12 }
    13 
    14 class Order
    15 {
    16     //私有化类的构造器
    17     private Order()
    18     {
    19         
    20     }
    21     //声明当前类对象,没有初始化
    22     private static Order instance=null;
    23     //声明public,static的返回当前类对象的方法
    24     public static Order getInstance()
    25     {
    26         if(instance==null)
    27             instance=new Order();
    28         return instance;
    29     }
    30 }

    两者区别在于:饿汉式的类对象是及时创建的,懒汉式的类对象是需要时再创建的。

  • 相关阅读:
    SpringBoot学习
    Matlab立体标定mat转换成Opencv的CvMat
    由lib引发的血案(opencv找不函数问题)
    C# 使用Epplus导出Excel [4]:合并指定行
    C# 使用Epplus导出Excel [3]:合并列连续相同数据
    C# 使用Epplus导出Excel [2]:导出动态列数据
    C# 使用Epplus导出Excel [1]:导出固定列数据
    C# Excel常用控件总结
    C# IsNullOrEmpty与IsNullOrWhiteSpace
    C# 读App.config配置文件[2]: .Net Core框架
  • 原文地址:https://www.cnblogs.com/zuiaimiusi/p/10828287.html
Copyright © 2011-2022 走看看