一般在单例模式下使用.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静态实例方法的。

转载于:https://www.cnblogs.com/baxianhua/p/9341953.html

单例模式及getInstance()的用法相关推荐

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

    介绍 单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一. 这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 这种模式涉及到一个单一的类,该类负责创建 ...

  2. collator java_Java Collator getInstance(Locale)用法及代码示例

    java.text.Collat​​or类的getInstance(Locale)方法用于获取具有所需语言环境的新整理对象. 用法: public static Collator getInstanc ...

  3. 关于java中getInstance()方法

    关于java中getInstance()方法java 先看一个例子 public abstract class TestInstance { static int i = 1; public stat ...

  4. Java枚举类型(enum)详解

    文章目录 理解枚举类型 枚举的定义 枚举实现原理 枚举的常见方法 Enum抽象类常见方法 编译器生成的Values方法与ValueOf方法 枚举与Class对象 枚举的进阶用法 向enum类添加方法与 ...

  5. JAD反编译tricks

    jad反编译工具,已经不再更新,且只支持JDK1.4,但并不影响其强大的功能. 基本用法:jad xxx.class,会生成直接可读的xxx.jad文件. 自动拆装箱 对于基本类型和包装类型之间的转换 ...

  6. 用生命周期规范组件化流程

    写在前面 1. 组件划分 架构 宿主壳.调试壳 组件层 基础层 MVC.MVP.MVVM 如何下沉 Utils 规范:使用 Kotlin 静态方法 单例模式 res 规范:命名清晰 string.xm ...

  7. JavaScript基础知识汇总

    一.原型/原型链/构造函数/实例/继承 js万物皆对象,用  var a={} 或   var a = new Object() 或者用构造函数的形式:  var a = new A() 创建一个对象 ...

  8. 【c++】0.C++笔记

    1.DISALLOW_COPY_AND_ASSIGN 2.延时函数delay().sleep().usleep() 3.opencv在图片中绘图常使用的几个函数 4.opencv中 cv::Mat 与 ...

  9. 每个软件开发人员都应该知道的5种设计模式

    通常设计模式是用于解决问题的模板,可以在多种不同的情况下使用,但它并不是一个可以直接转换为代码的设计,但确实开发者奠定软件是否成功的基础. 有一些设计模式是每个开发人员都应该了解的,包括它应该在什么地 ...

最新文章

  1. pandas dataframe中的列进行重新排序、倒排、正排、自定义排序详解及实践
  2. java中this关键词
  3. windows_硬盘上设置虚拟内存
  4. Redis安装和使用指南
  5. javaweb项目得执行过程及servlet得请求(Httprequest)和响应(Httpresponse)
  6. c++刷题(18/100)树
  7. mysql 执行时间有波动_阿里P8架构师谈mysql性能优化思路
  8. 笨方法学python --习题12
  9. 上位机软件需求说明书100元
  10. LaTeX 论文排版学习笔记(零基础)
  11. 指针概念、指针大小和内存详解
  12. 华硕a豆安装ubuntu14.04系统开启wifi
  13. 大一新生HTML期末作业,网页制作作业(大一学生作品)
  14. 用js实现贪吃蛇网页游戏
  15. 基桩静荷载测试数据分析软件,静荷载基桩检测原理及应用技术
  16. 【C++】RAll,裸指针,弃用auto_ptr原因
  17. react项目中解决IE浏览器下报Promise未定义的错误
  18. java无穷大 inf_Java正无穷大、负无穷大以及NaN
  19. Graphviz 双向边和无向边
  20. APIPOST 常见设置项

热门文章

  1. 数据库表设计的随笔(分库分表)
  2. 算法导论 第二部分——排序和顺序统计量
  3. 屏蔽微软的SignalR
  4. leach协议matlab仿真代码
  5. socketserver模块解析
  6. jquery动态生成SKU表格
  7. Android LruCache 压缩图片 有效避免程序OOM
  8. Python黑帽编程 3.1 ARP欺骗
  9. 怎样在VirtualBox 虚拟机中挂载共享目录
  10. HttpClient第一章(一)