您的位置:首页 > 职场人生

黑马程序员 学习笔记——Java 二十三设计模式之单例

2012-06-08 15:07 579 查看
----------------------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 回收站。

在整个视窗系统中,回收站只能有一个实例,整个系统都使用这个惟一的实例,而且回收站自行提供自己的实例。因此,回收站是单例模式的应用。

----------------------android培训java培训、期待与您交流! ----------------------

详细请查看:http://edu.csdn.net/heima
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: