黑马Java学习笔记之-----单例模式
---------------------- android培训、java培训、期待与您交流! ----------------------
单例模式:
单例模式确保一个类只有一个实例,自行提供这个实例并向整个系统提供这个实例。
特点:
1,一个类只能有一个实例
2,自己创建这个实例
3,整个系统都要使用这个实例
保证唯一性的思想及步骤:
**为了避免其他程序建立该类对象,先禁止其他程序建立该类对象,即将构造函数私有化
**为了其他程序访问到该类对象,须在本类中创建一个该类私有对象
**为了方便其他程序访问到该类对象,可对外提供一个公共访问方式
两种形式:
1、饿汉式单例类:当类加载的时候就创建对象
1 class EagerSingleton { 2 private static final EagerSingleton m_instance = new EagerSingleton(); 3 4 /** * 私有的默认构造函数,仅供内部调用*/ 5 private EagerSingleton() { 6 } 7 8 /** *这里提供了一个供外部访问本class的静态方法,可以直接访问*/ 9 public static EagerSingleton getInstance() { 10 return m_instance; 11 } 12 }
2、 懒汉式单例类:当使用的时候才创建对象
1 class LazySingleton { 2 // 注意,这里没有final 3 private static LazySingleton m_instance = null; 4 5 /** * 私有的默认构造函数 */ 6 private LazySingleton() { 7 } 8 9 //使用时生成实例,提高了效率! 10 public synchronized static LazySingleton getInstance() { 11 if (m_instance == null) { 12 m_instance = new LazySingleton(); 13 } 14 return m_instance; 15 } 16 }
饿汉式和懒汉式的区别:
**
饿汉式是类一加载进内存就创建好了对象;
懒汉式则是类才加载进内存的时候,对象还没有存在,只有调用了getInstance()方法时,
对象才开始创建。
**
注:
开发常用饿汉式,因为饿汉式简单安全。懒汉式多线程的时候容易发生问题
---------------------- android培训、java培训、期待与您交流! ----------------------
转载于:https://www.cnblogs.com/MercyK/archive/2013/04/29/3020988.html
黑马Java学习笔记之-----单例模式相关推荐
- 黑马Java学习笔记之-----集合框架
---------------------- android培训.java培训.期待与您交流! ---------------------- 一.概述: Java的集合类是一种特别有用的工具类,它可以 ...
- 传智播客黑马Java学习笔记_day08_2
设计模式:对问题行之有效的解决方式,一种思想,java24种 单例设计模式 解决问题:可以保证一个类的对象在内存中的唯一性 应用场景:多个程序使用同一个配置文件对象,就要保证配置文件的唯一性,配置文件 ...
- 传智播客黑马Java学习笔记_09
在子类创建对象时,发现父类的构造方法也运行了,为什么呢? 在子类的构造函数中第一行有一个隐式语句super(); class Fu{Fu(){System.out.println("Fu i ...
- 传智播客黑马Java学习笔记_day05
遍历数组 class Demo{public static void main(String args[]){int[] arry=new int[]{87,99,56};for(int x=0;x& ...
- 传播智客黑马Java学习笔记_day06
二维数组的定义方式 //@左边是实体类型,右边是实体哈希值 class Demo{public static void main(String args[]){/*int[][] array=new ...
- 传智播客黑马Java学习笔记_day10_02
对象的多态性 父类或者接口的引用指向子类对象 多态的好处 提高了代码的扩展性,前期的代码可以使用后期的内容 多态的弊端 前期的代码不能调用后期的特有内容 多态的前提 必须有关系:继承.实现 必须覆盖父 ...
- 传播智客黑马Java学习笔记_day10_01
开发中接口分为使用接口和实现接口的子类(暴露规则,使用规则,实现规则) interface USB{//暴露规则public abstract void open();public abstract ...
- Java学习笔记(原创)
Java学习笔记(原创) 2011-12-01 16:37:00| 分类: Java|举报|字号 订阅 下载LOFTER客户端 基本知识 一. Java基础 1. java语言的特点: ①简单:没有 ...
- java学习笔记11--Annotation
java学习笔记11--Annotation Annotation:在JDK1.5之后增加的一个新特性,这种特性被称为元数据特性,在JDK1.5之后称为注释,即:使用注释的方式加入一些程序的信息. j ...
最新文章
- windows下载anaconda3速度太慢怎么办
- 正态分布||方差、均值的概念
- NOIP2017洛谷P3953:逛公园(分层图最短路、dp、拓扑)
- nosql和rdnms_用于SaaS和NoSQL的Jdbi
- vue之vue-router跳转
- oracle集群启动状态,oracle 11g集群软件无法启动解决步骤
- Java 数据库连接池的实现
- 基于SSM的Java图书管理系统
- 软件测试之Web测试流程和方法
- Springboot实现拦截器与过滤器
- 爱豆被“调包”?周杰伦:说好不哭
- MBR、主引导扇区,主分区、扩展分区、逻辑分区,活动分区、引导分区、系统分区、启动分区
- java系统化基础-day01-基础语法知识
- 东电计算机专业好就业吗,东北电力大学就业前景怎样好不好
- 仪器分析和计算机,化学分析和仪器分析的区别
- html中hover的作用,hover在css中的作用是什么
- python做表格教程_表格函数教程
- java 多线程 内存泄露_关于内存泄露的总结
- 【Python脚本进阶】2.1、端口扫描器(下):NMAP端口扫描
- 胡小林:把日常生活中碰到的事变成我们发露忏悔的机会
热门文章
- 2019 训练比赛 记录
- 透過 OpenNI 建立 Kinect 3D Point Cloud
- luogu5024 [NOIp2018]保卫王国 (动态dp)
- 运行 composer update,提示 Allowed memory size of bytes exhausted
- tyvj1305 最大子序和 【单调队列优化dp】
- 在Ubuntu下利用Eclipse调试FFmpeg
- 分别使用委托、接口、匿名方法、泛型委托实现加减乘除运算
- ASP.NET MVC和jQuery DataTable整合
- 我要再接再力 学更多
- linux发行版本在这里。