黑马程序员----单例设计模式
来源:互联网 发布:sqlalchemy sql注入 编辑:程序博客网 时间:2024/05/29 18:48
------Java培训、Android培训、iOS培训、.Net培训、期待与您交流!-------
单例的作用:只能让内存中只有这一个类的存在,也就是说这个类只能有一个实例,别人来共同
设计的目的以及什么时候调用:优化内存,如果一个类它只有一个变量,那么它是以类存在的话,此时就可以设计成单例模式。如何设计:
一,它不能被其他类给实例化了。
二,它可以自己提供一个实例化方法,三,这个方法是静态的,要对外访问。
两种单例:懒汉式,顾名思义,比较懒,当要用到的时候,再去加载它,不然就不给加载。
饿汉式:用到的时候就已经加载好了。
饿汉式:
class Singleton {// 私有,静态的类自身实例private static Singleton instance = new Singleton();// 私有的构造子(构造器,构造函数,构造方法)private Singleton() {}// 公开,静态的工厂方法public static Singleton getInstance() {return instance;}}懒汉式:
class Single {// 私有构造方法,不允许其他类创建对象private Single() {};private static Single instance = null;// 提供获取对象的方法public static Single getInstance() {if (instance == null) { // 用到的时候再去加载它.instance = new Single();}return instance;}}懒汉式优化:多线程
class Single {/* * 如果单例是被多条线程给执行了, 那么执行懒汉式的时候,就出现 * * 两条线程同时执行了null的方法, 那么A线程执行等于null,实例化一个对象了,B再进来又被实例化了一条 * * 这是不允许的,那么就要用到synchronized同步锁这个概念 */private Single() {};private static Single instance = null;// 提供获取对象的方法public static Single getInstance() {// 提高判断锁的效率不让每次都判断// 如果是synchronized在前面的话,每次都要判断锁,效率很低。if (instance == null)// 多线程的同步操作,锁是自身的字节码synchronized (Single.class) {if (instance == null)// 自己创建对象instance = new Single();}return instance;}}
0 0
- 黑马程序员_单例设计模式
- 黑马程序员_单例设计模式
- 黑马程序员 单例设计模式
- 黑马程序员_单例设计模式
- 黑马程序员_单例设计模式
- 黑马程序员-单例设计模式
- 黑马程序员---单例设计模式
- 黑马程序员:单例设计模式
- 黑马程序员-单例设计模式
- 16.黑马程序员-设计模式-单例
- 黑马程序员_单例设计模式
- 《黑马程序员》单例设计模式
- 黑马程序员_java 单例设计模式
- 黑马程序员--单例设计模式
- 黑马程序员---单例设计模式【java】
- 黑马程序员-单例设计模式
- 黑马程序员—单例设计模式
- 黑马程序员_单例设计模式
- easyui下的ajax提交
- 4_VIM编辑器的使用和常用命令介绍
- cuda初学03
- poj2516 最小费用最大流
- jdk1.7新特性try(){}
- 黑马程序员----单例设计模式
- android开发技巧——仿新版QQ锁屏下弹窗
- 仿新浪微博学习笔记04
- 数据结构之单链表
- HTTP 错误 403.14-Forbidden
- 对链表中的某一项数据进行排序
- PHP:防止跨域CURL采集数据
- Error: The input doesn't contain any classes. Did you specify the proper '-injars' options?
- 修改默认的/tmp/mysqk.sock路径