`
- 浏览:
49406 次
- 性别:
- 来自:
广西南宁
-
单例模式:
模式主要作用: 保证在Java应用程序中,一个类Class只有一个实例存在
比如: 建立目录 数据库连接 都需要这样的单线程操作
一些大的应用程序中,主程序只需要有一个,因此需要使用单例模式
我们常常看到 工厂模式 中类装入器(class loader)中也用Singleton模式实现的,
因为被装入的类实际也属于资源
优点:
1,实例控制:单例模式防止其它对象对自己的实例化,确保所有的对象都访问一个实例。
2,伸缩性:因为由类自己来控制实例化进程,类就在改变实例化进程上有相应的伸缩性。
= 节省内存 有利于Java垃圾回收
缺点:
1,系统开销。虽然这个系统开销看起来很小,但是每次引用这个类实例的时候都要进行实例是否存在的检查。
这个问题可以通过静态实例来解决。
2,开发混淆。当使用一个单例模式的对象的时候(特别是定义在类库中的),
开发人员必须要记住不能使用new关键字来实例化对象。因为开发者看不到在类库中的源代码,
所以当他们发现不能实例化一个类的时候会很惊讶。
3,对象生命周期。单例模式没有提出对象的销毁。在提供内存管理的开发语言
(比如,基于.NetFramework的语言)中,只有单例模式对象自己才能将对象实例销毁,
因为只有它拥有对实例的引用。在各种开发语言中,比如C++,其它类可以销毁对象实例,
但是这么做将导致单例类内部的指针指向不明。
--------------------------------
总结:
单例模式 看起来简单,使用方法也很方便,但是真正用好,是非常不容易,
需要对Java的类,线程,内存等概念有相当的了解
/**
第一种单例模式 写法:
一般认为第一种形式要更加安全些
*/
public class SingleModel{
private static SingleModel instance = new SingleModel();
public static SingleModel getInstance(){
return instance;
}
}
/**第二种单例模式 写法*/
public class SingleModel{
private static SingleModel instance = null;
public static synchronized Singleton getInstance(){
if(instance == null){
instance = new SingleModel();
}
return instance;
}
}
分享到:
Global site tag (gtag.js) - Google Analytics
相关推荐
《C++20设计模式》学习笔记-第5章单例模式
NULL 博文链接:https://xiandaoyan.iteye.com/blog/663348
第一次校验的时候没有同步锁,如果已经实例化了,直接返回即可,省下了同步锁要消耗的资源 第二次校验是因为第一次校验没有同步锁,所以多个线程都可能进入,同步块内二重
近在学设计模式的一些内容,主要的参考书籍是《Head First 设计模式》,同时在学习过程中也查看了很多博客园中关于设计模式的一些文章的,在这里记录下我的一些学习笔记,一是为了帮助我更深入地理解设计模式,二...
代理模式学习笔记、单例模式学习笔记、命令模式、原型模式、模式特点总结。 为个人对设计模式的理解,如果有理解不一致的不要砸砖啊
本文实例讲述了Javascript面向对象程序设计单例模式原理与实现方法。分享给大家供大家参考,具体如下: 1.单例模式概述 源自百度百科对于单例模式的定义: 单例模式的意思就是只有一个实例。单例模式确保某一个类...
1) 内容包括: 设计模式七大原则(单一职责、接口隔离、依赖倒转、里氏替换、开闭原则、迪米特法则、合成复用)、UML类图(类的依赖、泛化和实现、类的关联、聚合和组合) 23种设计模式包括:创建型模式:单例模式(8种...
我是清风~,每天学习一点点,快乐成长多一点,这些都是我的日常笔记以及总结。 目录单例模式懒汉式单例模式未初始化问题解决Double Check 双重检查方案一:不让第二步和第三步重排序-DoubleCheck方案二:基于类初始...
单例模式 当需要保证某个对象只能有一个实例的时候,单例模式非常有用。它把创建对象的控制权委托到一个单一的点上,任何时候应用程序都只会仅有一个实例存在。单例类不应该可以在类的外部进行实例化一个单例类应该...
今天听完狂神说java的单例模式,感慨万分。希望通过这篇文章跟大家一起学习。 1. 饿汉式 [1] 一个私有的构造器 [2] 一个静态变量 [3] 一个静态方法返回对象 饿汉式单例是直接使用静态变量的方式生成这个单例对象...
JavaScript常见的一些设计模式学习笔记和代码实现。包括工厂模式、单例模式、代理模式、发布订阅模式、中介者模式等等内容。
1. 创建型模式:创建型模式关注对象的创建过程,包括简单工厂模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式和单例模式。这些模式可以帮助我们更灵活地创建对象,避免直接使用new关键字来创建对象,降低...
在PHP学习中,收集了一些常用的编程方法和思想,集中详细的记录了9种设计模式的设计思路和用法。比如:工厂模式,单例模式,注册模式,适配器模式,观察者模式等
该资料介绍Java各类开发模式,包含以下教程:《深入浅出设计模式(中文版)》《Java单例模式》《Java设计模式-图解-附代码》《JAVA设计模式之单例模式(完整版)》《Java学习笔记(必看经典)》《Java总复习》《单例模式》...
设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。
单例模式 6 final关键字 6 抽象类 8 抽象类--模板设计模式 9 接口 9 内部类 11 匿名内部类的使用(重要!!!!!!!) 13 成员内部类的使用 13 静态内部类的使用 14 枚举的二种实现方式 14 自定义类实现枚举 14 使用 enum ...
最近在设计模式的一些内容,主要的参考书籍是《Head First 设计模式》,同时在学习过程中也查看了很多博客园中关于设计模式的...首先我介绍的是设计模式中比较简单的一个模式——单例模式(因为这里只牵涉到一个类)
根据b站千峰教育所做的笔记 1.Python基础 1.1使用基础 1.2PIP使用 1.3内置函数/变量/模块 1.4代码输入基础知识细节 1.5列表 1.6元组 ...1.21单例模式 1.22模块/包 1.23正则表达式 1.24进程/线程/协程
jdbc深入细致的讲解。主要讲解了sql注入。工厂模式的设计。单例模式的设计。以及各种数据库常见sql语句在java面向对象中的编写