黑马程序员 学习笔记——Java 二十三设计模式之单例
来源:互联网 发布:凡科网站域名免费申请 编辑:程序博客网 时间:2024/06/05 19:57
----------------------android培训 、java培训、期待与您交流! ----------------------
Java 中解决某一问题最行之有效的方法是设计模式。在java 有二十三中设计模式。今天的笔记是二十三设计模式之 单例。
三个要点:一是某各类只能有一个对象实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例
单例设计模式解决在java中只存在一个对象。为了保证对象唯一,需要做到:
1 为避免其他程序过得的建立该类对象,先禁止其他程序建立该类对象。
2 为了其他程序可以访问该类对象,本类自定义一个对象。
3 为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。
这三步该如何用代码体现呢?
1将构造函数私有化
2在类中创建一个本类对象
3提供一个方法可以获取到该对象.
按上面的方法 举一个毕老师写的例子。
首相 建一个方法并私有化构造函数
class Single(){
private Single (){} //私有化构造函数
//第二步创建本类对象
private static single s=new Single();
//第三步 提供一个方法可以获取到该对象获取实例对象
public static Single getInstance(){
return s;
}
}
.//主函数调用:
class SingleDemo(){
public static void main (String[] args){
Single ss= Single.getInstance();
}
}
当然需要注意的是我们对事物该怎么描述时 还得怎么描述。当需要将该事物的对象保证在内存中唯一时,就将以上步骤加上就是。
当然上面这个方法是先初始化对象,又被称之为 “饿汉式”
还有种方法称为“懒汉式”是有等到被调用时 才进行初始化。也称作对象的延迟加载。
代码如下:
class Single(){
private static Single s=null;
private Single(){}
pbulic static Single(){
If(s==null){
S=new Single();
}
return s;
}
}
“饿汉式”特点:拿上面的single类说。Single类一进入内存,就已经创建好对象。
“懒汉式" 特点:single类进入内存,对象还没有存在。只有点用 getInstance时 才建立对象。
原则:定义单例时 一般用饿汉式。
补充些我在网络上找到关于 单例的 小知识。
例: 在下面的对象图中,有一个"单例对象",而"客户甲"、"客户乙" 和"客户丙"是单例对象的三个客户对象。可以看到,所有的客户对象共享一个单例对象。而且从单例对象到自身的连接线可以看出,单例对象持有对自己的引用。
Singleton模式主要作用是保证在Java应用程序中,一个类Class只有一个实例存在。在很多操作中,比如建立目录 数据库连接都需要这样的单线程操作。一些资源管理器常常设计成单例模式。
外部资源:譬如每台计算机可以有若干个打印机,但只能有一个Printer Spooler,以避免两个打印作业同时输出到打印机中。每台计算机可以有若干个通信端口,系统应当集中管理这些通信端口,以避免一个通信端口被两个请求同时调用。内部资源,譬如,大多数的软件都有一个(甚至多个)属性文件存放系统配置。这样的系统应当由一个对象来管理这些属性文件。
一个例子:Windows 回收站。
在整个视窗系统中,回收站只能有一个实例,整个系统都使用这个惟一的实例,而且回收站自行提供自己的实例。因此,回收站是单例模式的应用。
- 黑马程序员 学习笔记——Java 二十三设计模式之单例
- 黑马程序员------java学习笔记之单例设计模式
- 黑马程序员Java学习笔记之单例设计模式
- 黑马程序员学习笔记——单例设计模式
- 黑马程序员-Java学习笔记之设计模式(单例设计模式,装饰设计模式,模板设计模式)
- 黑马程序员 JAVA学习笔记——java基础 单例设计模式
- 黑马程序员—java基础学习--单例设计模式
- 黑马程序员笔记——Java面向对象之static关键字和单例设计模式
- 黑马程序员 【】java学习之路——单例设计模式简介
- 黑马程序员——Java设计模式之单例设计模式
- 黑马程序员——黑马学习日志之六 静态,单例设计模式,继承,多态
- 黑马程序员——黑马学习日志之二十三 Java高新技术(五)
- 黑马程序员————java设计模式之单例模式一
- 黑马程序员——JAVA设计模式之单例模式
- 黑马程序员——Java设计模式之单例模式
- 黑马程序员-java设计模式之单例模式
- 黑马程序员-Java设计模式之单例模式解析
- 黑马程序员 学习笔记四: 单例设计模式
- 三星 Galaxy Nexus,4.0.3/华为荣耀U8860 从程序自动创建快捷方式进入报 [没有找到Activity]
- Delphi中DLL封装对象的几种方法整理及体会
- 关于jvm 中vmthread的问题
- Java类的引用示例
- s3c2440的GPIO上电初始值
- 黑马程序员 学习笔记——Java 二十三设计模式之单例
- JAVA操作XML的完整例子——W3C DOM篇
- 设置Activity进入退出动画
- 调用webservice
- 壆消費作者黄同君
- Palm 和 webOS 的故事(上)
- 组合模式
- 用java调用webservice接口
- windows BAT自动化上传文件到linux server, 执行远程脚本