单例模式及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静态实例方法的。
相关文章
- springboot整合mybatis(配置模式+注解模式)
- 18-MVC开发模式
- Spring中使用模板方法模式(接上文)
- 【敏捷7.3】缺陷、质量与失败模式
- php设计模式-简单工厂模式 (Simple Factory)
- 【安全算法之DES】DES算法(支持ECB/CBC模式)的C语言源码实现
- react源码--legacy模式和concurrent模式
- 基于Kafka的六种事件驱动的微服务架构模式
- javaweb学习总结(二十一)——JavaWeb的两种开发模式详解编程语言
- 模式探索Linux系统休眠模式的奥秘(linux系统休眠)
- 微软官方确认:Win11 消费者版本仍默认浅色模式
- 微信视频号升级青少年模式!完善弹窗提示、时长限制
- 硬核观察 #356 微软计划为 Edge 浏览器提供“超级无敌安全模式”
- MySQL数据库模式优化实践(mysql 数据库模式)
- MySQL配置指南实现一主多从模式的步骤(mysql 一主多从配置)
- perl变量$/的用法解析上下文为行模式时,$/定义以什么来区分行
- Android听筒模式的具体实现实例
- 简单谈谈javascript代码复用模式