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

来源:互联网 发布:凡科网站域名免费申请 编辑:程序博客网 时间:2024/06/05 19:57

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


Java 中解决某一问题最行之有效的方法是设计模式。在java 有二十三中设计模式。今天的笔记是二十三设计模式之 单例。

三个要点:一是某各类只能有一个对象实例;二是它必须自行创建这个实例;三是它必须自行向整个系统提供这个实例

单例设计模式解决在java中只存在一个对象。为了保证对象唯一,需要做到:

为避免其他程序过得的建立该类对象,先禁止其他程序建立该类对象。

为了其他程序可以访问该类对象,本类自定义一个对象。

为了方便其他程序对自定义对象的访问,可以对外提供一些访问方式。

这三步该如何用代码体现呢?

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


原创粉丝点击