黄金屋颜如玉

从点滴做起,就要不断积累

理解JAVA中的单例模式 --->花1分钟看看

                                理解JAVA中的单例模式  

欢迎加入我的qq群1543150073获得更多加瓦和职场信息!我帮你!

单例模式简单说就是:同一个对象,不用去new多个对象。减少内存消耗!

       &于JAVA中的设计模式,看到介绍的大概有23种设计模式之多。象工厂模式,工厂方法模式,单例模式,外观(Facade)模式,观察者Observer模式,桥接(Bridge)模式都是比较常用的,不同的项目有不同的设计方向,可以参考的设计模式也不尽相同,没有定数,只是上面这几个模式用的比较多一些.cade)模式,观察者Observer模
    设计模式的好处,就是提供了一种通用的解决问题的好方法,减少重复劳动,提高开发效率。
    下面,阿堂今天就来说说其中的“单例模式”,其实,它在实际项目的开发中,它还是用得较多的   &
单例模式,就是在整个应用程序运行的过程中,使用单例模式的类只需要实例化一次(new一次),始终是同一个对象(实例),这样就减少了内存的开销,提高了开发效率,象一般的公共类,如读取一个配置文件的类,一个包含程序中其它类要调用所有公共见常量的类,等等,我们都可以定义一个“单例模式”的类,下面阿堂就来举个例来测试一下,相信,朋友们看到阿堂下面所举的例和总结,应该就清楚了!

到介绍的大概有23种设计模式之多。象工厂代码如下

nbsp;对于JAVA中的设计模式,看//下面是一个单例模式的类
public class MySingleton
{

到介绍的大概有23种设计模式之多。象工厂

    privatestatic final MySingleton INSTANCE=  new MySingleton();

    privateMySingleton()cade)模式,观察者Observer模
    {

    }

    publicstatic 到介绍的大概有23种设计模式之多。象工厂final MySingleton getInstance(){

     return INSTANCE;

    }   &
}

//下面一个不是单例模式的类cade)模式,观察者Observer模
public class NoSingleton
{
 public NoSingleton()模式,工厂方法模式,单例模式,外观(Fa
 {} 
 private int id;
 private String name;模式,工厂方法模式,单例模式,外观(Fa
 public int getId() {
  return id;
 }cade)模式,观察者Observer模
 public void setId(int id) {
  this.id = id;
 }cade)模式,观察者Observer模
 public String getName() {
  return name;
 }到介绍的大概有23种设计模式之多。象工厂
 public void setName(String name) {
  this.name = name;
 }

nbsp;对于JAVA中的设计模式,看

......

}

到介绍的大概有23种设计模式之多。象工厂
测试类

到介绍的大概有23种设计模式之多。象工厂

public class TestSingleton
{

nbsp;对于JAVA中的设计模式,看 //Date200810301627
 //authtor 网络时空

 cade)模式,观察者Observer模
 public static void main(String[] args)
 {
模式,工厂方法模式,单例模式,外观(Fa  System.out.println("========================================");    
  System.out.println("下面是使用单例模式,来调用类的实例");
  System.out.println("========================================");
  nbsp;对于JAVA中的设计模式,看
  for(inti=0;i<6;i++)
  { 

    intm=i+1;到介绍的大概有23种设计模式之多。象工厂
   System.out.println("第 "+m+" 次"+"得到的对象值为"+MySingleton.getInstance());
  }
cade)模式,观察者Observer模  System.out.println("========================================");   
  System.out.println("下面是不使用单例模式,来调用类的实例");
  System.out.println("========================================");
  nbsp;对于JAVA中的设计模式,看
  for(inti=0;i<6;i++)
  {
       int n=i+1;模式,工厂方法模式,单例模式,外观(Fa
       NoSingleton noSingletion=new NoSingleton();
       System.out.println("第 "+n+" 次"+"得到的对象值为"+noSingletion);
  }到介绍的大概有23种设计模式之多。象工厂
 }
}

nbsp;对于JAVA中的设计模式,看
测试结果:

cade)模式,观察者Observer模实例测试来理解JAVA中的单例模式 - 网络时空 - heyitang的个人主页

 

 

nbsp;对于JAVA中的设计模式,看

根据结果,阿堂总结如下

到介绍的大概有23种设计模式之多。象工厂1.通过单例模式设计的类MySingleton,定义了一个private的构造方法,一个staticfinal类型的常量INSTANCE,其值就是返回一个MySingleton的实例,然后再定义一个getInstance()的静态方法来返回一个INSTANCE,而这个值就是一个不变的实例或值,也就是第一次newMySingleton()产生的对象,所以测试类中,循环6次中,我们打印得到的始终是同一个对象,这就充分验正了,单例模式,只new了一次(实例化了一次),减少了在堆中开辟内存空间的开销

nbsp;对于JAVA中的设计模式,看

   &2.没有用单例模式的类,我们在测试类中,循环6次中,我们打印得到的始终是不同对象,这就说,我们在堆内存中new了六次,产生了6个对象,很显示,这是需要占用内存资源,影响运行效率的

nbsp;对于JAVA中的设计模式,看3.对于上单例模式的类中,在测试中,阿堂去掉了final终态类型的限制,循环6次中,我们打印得到的始终是同一个对象,这里说明了final在此处可有可无,那为什么还要加上final呢?

nbsp;对于JAVA中的设计模式,看这里使用final是为了更安全,保证你这个类的其他方法、其他代码不能对

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭