黑马程序员_java单例设计模式
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------
一、设计模式,就是解决某一类问题最行之有效的方法。java中有23中设计模式。
单例设计模式:解决一个类在内存中只能存在一个对象。
要保证对象的唯一:
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();.............调用类中的对象
}
}
唯一性的保证,是通过内存来实现的,当加载类时,静态成员存在方法区中,类中建立的对象存于堆内存中,其中s是获取的对象所在堆内存的地址值,s在方法区中。之后主函数建立,在栈内存中有一个ss,方法区中的s把它的值赋给ss,使得ss指向堆内存中的对象。所有,即便主函数再有一个变量s1,也只能是被s赋值,指向堆内存中的对象。
当需要将该事物的对象保证在内存中唯一是,加上以上三个步骤。
二、单例设计模式
饿汉式:
class Single
{
private Single(){}
private static Single s = new Single();
public static Single getInstance()
(
return s;
)
}
懒汉式:
class Sinlge1
{
private Single1(){}
private Single1 s = null;
public static Single getInstance()
{
if(s==null)
s=new Single1();
return s;
}
}
饿汉式特点:类一进内存,就已经创建好了对象。
懒汉式特点:类一进内存,对象换没有存在,只有调用了方法的时候,才会建立对象。相对于饿汉式来说,
加载对象延迟了。
---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ----------------------