/**

 * 对象的实例化方法,也是比较多的,最常用的方法是直接使用new,而这是最普通的,如果要考虑到其它的需要,如单实例模式,层次间调用等等。
 * 直接使用new就不可以实现好的设计好,这时候需要使用间接使用new,即getInstance方法。这是一个设计方式的代表,而不仅仅指代一个方法名。
 * 
 */

/**
 * 1. new的使用:
 * 如Object _object = new Object(),这时候,就必须要知道有第二个Object的存在,而第二个Object也常常是在当前的应用程序域中的,
 * 可以被直接调用的
 * 
 * 2. GetInstance的使用:
 * 在主函数开始时调用,返回一个实例化对象,此对象是static的,在内存中保留着它的引用,即内存中有一块区域专门用来存放静态方法和变量,
 * 可以直接使用,调用多次返回同一个对象。
 * 
 * 3.两者区别对照:
 * 大部分类(非抽象类/接口/屏蔽了constructor的类)都可以用new,new就是通过生产一个新的实例对象,或者在栈上声明一个对象 ,每部分的调用
 * 用的都是一个新的对象。
 * 
 * getInstance是少部分类才有的一个方法,各自的实现也不同。
 * getInstance在单例模式(保证一个类仅有一个实例,并提供一个访问它的全局访问点)的类中常见,用来生成唯一的实例,getInstance往往是static的。
 * 
 * (1) 对象使用之前通过getInstance得到而不需要自己定义,用完之后不需要delete;
 * (2)new 一定要生成一个新对象,分配内存;getInstance() 则不一定要再次创建,它可以把一个已存在的引用给你使用,这在效能上优于new;
 * (3) new创建后只能当次使用,而getInstance()可以跨栈区域使用,或者远程跨区域使用。所以getInstance()通常是创建static静态实例方法的。
 * 
 * 总结:
 * getInstance这个方法在单例模式用的甚多,为了避免对内存造成浪费,直到需要实例化该类的时候才将其实例化,所以用getInstance来获取该对象,
 * 至于其他时候,也就是为了简便而已,为了不让程序在实例化对象的时候,不用每次都用new关键字,索性提供一个instance方法,不必一执行这个类就
 * 初始化,这样做到不浪费系统资源!
 * 
 * 单例模式 可以防止 数据的冲突,节省内存空间
 * 
 */

    1. //使用实例,在定义的新类当中加入getInstance()方法,返回值即为该类的一个对象,此方法常常应用在Java的单例模式当中
    2. public class OAuthConstant {
    3. public static synchronized OAuthConstant getInstance(){
    4. if(instance == null)
    5. instance = new OAuthConstant();
    6. return instance;
    7. }
    8. }
    9. //主函数当中使用此类的getInstance()函数,即可得到系统当前已经实例化的该类对象,若当前系统还没有实例化过这个类的对象,则调用此类的构造函数
    10. //实例化一个对象,并返回
    11. OAuthConstant.getInstance();

关于单例模式getInstance()的使用的更多相关文章

  1. 单例模式getInstance()

    /** * 对象的实例化方法,也是比较多的,最常用的方法是直接使用new,而这是最普通的,如果要考虑到其它的需要,如单实例模式,层次间调用等等. * 直接使用new就不可以实现好的设计好,这时候需要使 ...

  2. 单例模式 GetInstance()

    如何设计一个含GetInstance()函数的类 直接上代码: 头文件(MyClass.h): class CMyClass { public: CMyClass(void); ~CMyClass(v ...

  3. 单例模式及getInstance()的用法

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

  4. 【hadoop】看懂WordCount例子

    前言:今天刚开始看到map和reduce类里面的内容时,说实话一片迷茫,who are you?,最后实在没办法,上B站看别人的解说视频,再加上自己去网上查java的包的解释,终于把WordCount ...

  5. java 单例模式及getInstance的好处

    1.什么是单例模式 简单理解为,有一个类,只能有一个实例化对象,这就是单例模式. 2.getInstance的好处 首先看一下怎样使用getInstance实现单例模式 public class Co ...

  6. spring bean单例注入与用单例模式通过class.getinstance()区别?

    1.action的某个方法中,用以下代码获得redis单例实例 RedisDelegate redisDelegate = RedisDelegate.getInstance(); redisDele ...

  7. C++实现线程安全的单例模式

    在某些应用环境下面,一个类只允许有一个实例,这就是著名的单例模式.单例模式分为懒汉模式,跟饿汉模式两种. 首先给出饿汉模式的实现 template <class T> class sing ...

  8. java设计模式之--单例模式

    前言:最近看完<java多线程编程核心技术>一书后,对第六章的单例模式和多线程这章颇有兴趣,我知道我看完书还是记不住多少的,写篇博客记录自己所学的只是还是很有必要的,学习贵在坚持. 单例模 ...

  9. 设计模式C#合集--单例模式

    单例模式 代码: 第一种: private static Singleton singleton = null; private Singleton() { } public static Singl ...

随机推荐

  1. WePay-T

    (需先申请微信支付商户账号) 在微信支付中绑定appid,公众号和小程序都一样 微信支付中如下: 微信公众平台如下(公众号与小程序一样): 微擎配置微信支付 appid.appsecret为公众号中对 ...

  2. opc 带有session

    现在使用java来做工控系统的几种方式: 知识储备: 一.OPC Server端目前常见的有以下几种协议: 参考博客:https://www.cnblogs.com/ioufev/articles/9 ...

  3. 华为Fusioncompute 6.5.1

    V6.5.1VRM“gandalf”用户的默认密码为“IaaS@OS-CLOUD9!”.CNA“gandalf”用户的默认密码为“IaaS@OS-CLOUD8!”.普通模式:admin/LaaS@PO ...

  4. Vue触发隐藏input file的方法

    1.使用input透明覆盖法 将input的z-index设置为1以上的数字并覆盖到需点击的内容上,将input的样式opacity设置为0(即为透明度为0),这样通过绑定在input上的change ...

  5. pacemaker入门

    原文链接:https://blog.csdn.net/a964921988/article/details/82628478 因为数据库部署在Linux上,需要做数据库集群实现高可用,而所有的Post ...

  6. information retrieval (CMU 11642)

    1. Heap's law. predict the number of new vocabulary. 参考:https://www.youtube.com/watch?v=JDp12gU-vEQ ...

  7. vue2.0 + npm + webpack 开发===环境配置

     cnpm安装:npm install -g cnpm --registry=http://registry.npm.taobao.org 1.安装vue-cli脚手架构建工具cnpm install ...

  8. 1.3.2 AQS 读写锁

    1.读写锁原理 2.利用读写锁写一个安全的HashMap 读写锁原理 ReadWriteLock:维护一对关联锁,一个读锁一个写锁,读锁可以由多个线程同时获得,写锁只能被一个线程获得.同一时间,读锁和 ...

  9. Python实现二叉树的非递归中序遍历

    思路: 1. 使用一个栈保存结点(列表实现): 2. 如果结点存在,入栈,然后将当前指针指向左子树,直到为空: 3. 当前结点不存在,则出栈栈顶元素,并把当前指针指向栈顶元素的右子树: 4. 栈不为空 ...

  10. 第8章:LeetCode--算法:二叉树的创建、遍历、删除、求高度

    创建> 需要给定一个root的key,所有小于这个key的放到左边,大于key的放到右边, 比如vector<int> tree = {5,2,7,1,9,3,8},最后的树: 5 ...