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

黑马程序员:单例设计模式

2012-08-07 17:25 211 查看
----------
android培训、java培训、期待与您交流! ----------

java中存在23种设计模式,其中,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。这个类称为单例类

单例设计模式的要点:

1.类只能有一个实例

2.它能自行创建这个实例

3.必须向系统提供调用此实例的方法

如何确保对象的唯一性:

1.为了避免其他程序过多的建立该类对象,就必须禁止其他程序建立该类对象

2.为了让其他程序可以访问到该类对象,只好在本类中,自定义一个对象

3.为了方便其他程序对自定义对象的访问,必须对外提供一些访问方式

以上三点的代码体现:

1.将构造函数私有化

2.在类中创建一个本类对象

3.提供一个方法可以获取到该对象

在java中用代码实现单例设计模式,在这我主要是分析两种方法:懒汉式和饿汉式

饿汉式:

关键代码:

class Single
{
private  Single(){}

private static Single s = new Single();

public static  Single getInstance()
{
return s;
}
}


懒汉式:

关键代码:

class Single
{
private static Single s = null;
private Single(){}
public static Single getInstance()
{
if(s==null)
{
synchronized(Single.class)
{
if(s==null)
s = new Single();
}
}
return s;
}
}

在后来的学习中,发现了枚举也能实现单例设计,它利用的原理就在于,枚举类型规定你只能用它里面设定的成员,所以,只有一个成员的时候,就是单例了。

枚举实现

关键代码

public enum SingleInstance{
/*提供了一个可以访问的枚举成员*/
//		singleInstance;	//默认是不带参的构造函数
singleInstance(2);	//使用带参的构造函数
private SingleInstance(){System.out.println("default constructor");};	//构造函数
private SingleInstance(int i){System.out.println("param constructor"+"..."+i);};	//带参的构造函数
public void method(){System.out.println("我是方法");};	//方法
}
}


----------
android培训、java培训、期待与您交流! ----------
详情请查看:http://edu.csdn.net/heima/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: