• 单例模式及getInstance()的用法


    一般在单例模式下使用.getInstance()创建对象;但并不是所有有私有构造方法,对外通过getInstance方法提供
    实例的情况就是单例模式。

    注:单例模式:一个类有且只有一个实例。
    1,一个私有的构造器
    2,一个私有的该类类型的变量
    3,必须有一个共有的返回类型为该类类型的方法,用来返回这个唯一的变量

    eg:
    public class Singleton{
        private Singleton(){}    //private 只能在自己内部供自己去访问
        private static Singleton instance=new Singleton();//在自己内部定义自己的一个实例
        public static Singleton getInstance(){         //此静态方法供外部直接访问
    return instance;
        }
    }

    判断Singelton一个类是否是单例模式:

    class Test{
        public static void main(String args[]){
    Singleton s1=Singleton.getInstance();
    Singleton s2=Singleton.getInstance();
    if(s1==s2)
    System.out.println("此类是单例模式");
    else
    System.out.println("此类不是单例模式");
        }
    }

    GetInstance与new区别:
    new的使用:如Object object = new Object(),这时候,就必须要知道有第二个public的Object构造方法的
    存在。


    GetInstance的使用:在主函数开始时调用,返回一个实例化对象,此对象是static的,在内存中保留着它
    的引用,即内存中有一块区域专门用来存放静态方法和变量,可以直接使用,调用多次返回同一个对象。


    (1)对象使用之前通过getinstance得到,而不需要自己定义,用完之后不需要delete;
    (2)new 一定要生成一个新对象,分配内存;getInstance() 则不一定要再次创建,它可以把一个已存在的
    引用给你使用,这在效能上优于new;
    (3) new创建后只能当次使用,而getInstance()可以跨栈区域使用,或者远程跨区域使用。所以getInstance()

    通常是创建static静态实例方法的。

  • 相关阅读:
    大道至简读后感(第二章)
    大道至简读后感
    将课程中的所有动手动脑的问题以及课后实验性的问题,整理成一篇文档
    python之基础
    python之面向对象
    python之网络编程
    python之函数
    Managing SharePoint 2010 Farm Solutions with Windows PowerShell
    Oracle RMAN vs. Export?
    转帖在oracle中自动大批量生成测试数据
  • 原文地址:https://www.cnblogs.com/baxianhua/p/9341953.html
Copyright © 2020-2023  润新知