zoukankan      html  css  js  c++  java
  • Java-单例设计模式

    设计模式

     可以重复利用的解决方案

     从结构上分为三类: 创建型、结构型、行为型

     

    最简单的是单例模式

     优点:对象实例创建完成后,会放到堆中,如果堆中实例过多,会导致一些问题,如内存溢出等

     使用单例后只会创建一个实例,显著减少实例对象的个数,同时也会提高性能,因为不会频繁创建对象

     

     单例解决什么问题

     //1)保证JVM中某一类型的Java对象,永远只有一个

     //2)为了节省内存的开销

     

    多个Java文件同时编译 javac *.java

    Array array = new Array();
    Array array1 = new Array();
    if (array == array1){
         System.out.println(true);
    }else  {
         System.out.println(false);
    }
    //false
    /*
     == 如果两边都是基本数据类型,可以比较这两个基本数据类型是否相等
     == 如

    实现单例模式:

    //实现单例模式
    //单例模式的要领:
    //1)构造方法私有化;
    //2)对外提供一个公开的静态的获取当前类型的对象的方法
    //3)提供一个当前类型的静态变量
    
    
    /*编译不通过(构造方法私有化)
    Singleton singleton1 = new Singleton();
    Singleton singleton2 = new Singleton();
    System.out.println(singleton1 == singleton2);
     */
    Singleton singleton1 = Singleton.getInstance();
    Singleton singleton2 = Singleton.getInstance();
    Singleton singleton3 = Singleton.getInstance();
    System.out.println(singleton1 == singleton2);//输出 true
    System.out.println(singleton2 == singleton3);//输出 true
    //单例模式的要领:
    //1)构造方法私有化;
    //2)对外提供一个公开的静态的获取当前类型的对象的方法
    //3)提供一个当前类型的静态变量
    
    //单例模式分两种
    //1.直接创建:在类加载阶段就创建对象
    //2.懒加载创建:用到对象时,才创建
    public class Singleton {
    
        //静态变量
        private static Singleton singleton;
    
        //将构造方法私有化 空构造(如果我们没有自定义构造方法时,系统默认会有一个空构造)
        private Singleton(){}
    
        //对外提供一个公开获取 Singleton对象的方法
        public static Singleton getInstance(){
            if (singleton == null) {
                singleton = new Singleton();
            }
            return  singleton;
        }
    }
    
    //饿汉式单例
    public class User {
    
        //类加载时,只执行一次
        private static User user = new User();
    
        //构造方法私有
        private User(){};
    
        //对外提供方法调用
        public static User getInstance(){
            return user;
        }
    }

     

  • 相关阅读:
    Java 堆和栈 垃圾回收 2015/9/16
    多态 Java 2015/9/16
    学校项目过程中知识点 Java 2015/9/15 晚
    Python print输出不换行
    Windows 加载EXT分区
    RouterOS 安全模式
    RouterOS Openswan l2tp ipsec
    RouterOS 自动邮件备份脚本
    python chnroutes ROS版
    Kinect 2.0&Speech 11 中文语音控制
  • 原文地址:https://www.cnblogs.com/StevenHuSir/p/Java_Singleton.html
Copyright © 2011-2022 走看看