Java 单例
来源:互联网 发布:用js做轮播图 编辑:程序博客网 时间:2024/06/03 20:50
目录 一、什么是设计模式 二、单例设计模式 三、如别保证对象唯一性 四、如何创建单例 1、饿汗式 2、懒汗式 五、如何验证对象唯一性
一、 什么是设计模式
解决某一类问题最行之有效的方法
二、单例设计模式
解决一个类在内存中只存在一个对象
三、如何保证对象唯一性
1、为了避免其他程序过多创建该类对象,先禁止其他程序创建该类对象(私有化构造函数)
2、在该类创建一个本类对象
3、本类提供一个方法获取该对象(其他程序访问该方法,该方法只能是静态的)
四、如何创建单例
1、 饿汗式
// 私有化构造函数 private ShareInstance(){ } //创建本类对象并私有化,由于静态只能访问静态成员,所有static下 private static final ShareInstance instance = new ShareInstance(); // 提供一个方法供外部访问 public static ShareInstance getInstance(){ return instance; }
特点 : single类 一进 内存,就已经创建好了对象(开发专用,安全)
2、懒汗式
private ShareInstance(){ } private static ShareInstanceinstance = null; public static ShareInstanceinstance getInstance(){ if(instance == null){ // synchronized 是锁的概念。能保证在同一时间内只能有一个人去访问他,后面多线程会涉及到 synchronized (ShareInstanceinstance .class) { if (instance == null) { instance = new ShareInstanceinstance (); } } } return instance; }
特点(延时加载) : ShareInstanceinstance 进内存对象还未存在,调用的时候才去创建
五、如何验证对象唯一性
// 声明一个成员变量用于测试 private int age; // get方法 public int getAge() { return age; } // set 方法 public void setAge(int age) { this.age = age; }在 main 函数 如下调用 public static void main(String[] args) { ShareInstance s = ShareInstance.getInstance(); s.setAge(23); ShareInstance s1 = ShareInstance.getInstance(); //始终只有一个对象 s和s1还有instance 的内存地址始终相同,指向堆内存中的实体 new ShareInstanceinstance (); System.out.println(s1.getAge()); }输出结果 : 23 // 说明 对象只创建一次。
单例demo
阅读全文
0 0
- Java单例注意事项
- java单例模式
- Java单例模式
- java单例模式
- java单例
- java单例模式
- Java单例模式
- Java单例模式
- java单例模式
- java单例讲解
- java 单例
- Java单例模式
- java 单例模式
- java单例模式
- java单例模式
- java单例
- java单例模式
- java 单例模式
- VTK之智能指针详解
- LeetCode OJ-34.Search for a Range
- JavaScript-RegExp 正则表达式
- RabbitMQ 学习笔记(六):RPC
- Unity单利模式模板
- Java 单例
- Java-Java常用的类、包以及接口
- tween.js一个平滑动效果的js动画库
- mybatis3教程
- C++的三个数组模板类
- 【数据库关系模型之关系代数】θ连接,等值连接和自然连接之间的差异
- JAVA内部类
- arm的具体含义是什么?
- ModelSim使用$display查看变量值和输出信息