----------------------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中的单例设计模式,包括饿汉式和懒汉式的实现方式,强调了单例模式确保类只有一个实例并提供全局访问点。通过具体的代码示例,解释了如何通过私有化构造函数、静态实例变量和公共静态方法实现单例。此外,还讨论了单例模式在资源管理中的应用,如Windows回收站。

4912

被折叠的 条评论
为什么被折叠?



