当前位置:编程学习 > JAVA >>

新人学习java中,想一段模式程序!

class A 										
{
public int i = 20;

private static A a = new A();      //  这里加个private ,将其变成了一个私有属性;

private A()
{

}

public static A getA()
{
return a;
}
}


这段程序的作用是什么,为什么要这样写了,其实际用途又是什么? --------------------编程问答-------------------- 保证该类只有一个实例 --------------------编程问答-------------------- 这就是设计模式中的单例模式 --------------------编程问答-------------------- 单例模式,保证系统中只存在一个A的实例 --------------------编程问答-------------------- 一般我们的构造函数都是public,而这里是private,为什么呢?

构造函数私有,这样可以确保这个类不能被实例化,那么这个对象就不能够实例化了,那我怎么来获得这个对象?
通过它自己的方法  getA()来获取自己的静态实例.因为是静态的,那么它获取的对象,永远就是同一个对象了.
这就是设计模式中的单例模式.

为什么要这样呢?举个实际的例子:
以前大臣们向皇帝汇报工作,因为中国只有一个皇帝,所以 大臣1,大臣2,大臣3..汇报的都是同一个人,在我们
要用到皇帝对象时,我们不能每次都新建一个,那样就导致有很多的皇帝了.
通过上面getA(),我们拿到的都是同一个皇帝,这样才是正确的. --------------------编程问答--------------------
引用 4 楼 wang171838 的回复:
一般我们的构造函数都是public,而这里是private,为什么呢?

构造函数私有,这样可以确保这个类不能被实例化,那么这个对象就不能够实例化了,那我怎么来获得这个对象?
通过它自己的方法  getA()来获取自己的静态实例.因为是静态的,那么它获取的对象,永远就是同一个对象了.
这就是设计模式中的单例模式.

为什么要这样呢?举个实际的例子:
以前大臣们向皇帝汇报工作,因为中国只有一个皇帝,所以 大臣1,大臣2,大臣3..汇报的都是同一个人,在我们
要用到皇帝对象时,我们不能每次都新建一个,那样就导致有很多的皇帝了.
通过上面getA(),我们拿到的都是同一个皇帝,这样才是正确的.


谢谢大神! 体会中 --------------------编程问答-------------------- 有些类在整个系统中只允许有一个实例。
而这段代码就是提供这个功能的。 --------------------编程问答-------------------- 留痕 拿分 走人 --------------------编程问答-------------------- 这是单例模式中的饿汉式。另还有单例的懒汉式,LZ还是谷歌一下比较详细吧。
面试貌似很喜欢问懒汉式,而不是这个饿汉式。 --------------------编程问答-------------------- 最简单的单例模式 --------------------编程问答-------------------- 这是单例模式的一种 叫饿汉式 还有一种懒汉式如下
class Singleton {
  private static Singleton instance=null;
  private Singleton(){}
  static Singleton getInstance() {
      if(instance==null)
      instance=new Singleton();
      return instance;
  }
} --------------------编程问答-------------------- http://blog.csdn.net/yyaf2013/article/details/8980266

这是一种单例模式,你看看这篇文章,应该就能有一定体会了!这个单例解释的真的非常非常到位!
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,