`
sky_eye
  • 浏览: 4514 次
  • 性别: Icon_minigender_1
社区版块
存档分类
最新评论

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

 
阅读更多

                              黑马程序员_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培训、期待与您交流! ----------------------

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics