单例模式

廉月程 2014-03-15 01:21:44
package HomeWork110306;

/**
* 单例模式:保证一个java的类只有一个实例
* 可以通过将构造方法声明成私有的,在类内部创建实例
* 对外提供一个公用方法来获取这个实例
* 饱汉模式:一般认为饱汉模式安全。每次申请一次内存,宁撑死不挨饿
* 饥汉模式:注意饥汉模式下的公用方法必须是线程同步的,原因????
* 其他模式:定义一个类,构造方法为private,所有方法为static的
* @author wybin
*/
public class Singleton {
/**1.饱汉模式
* 每次都要生成一次对象,所以饱了。这样总的类对象不是多个了吗?
* 是指每次调用这个类时都要new一次吗?可是内存不是只有一份吗?
*/
private Singleton(){//构造方法是私有的
}
//实例化代码放在静态代码块里可以提高程序执行效率,但可能更占空间
private final static Singleton instance = new Singleton();
//提供公用方法,用于获取类内部的类实例
public static Singleton getInstance(){
return instance;
}


/**2.饥汉模式,注意其getInstance方法是synchronized的
* 使用getInstance判断,当实例为空时才生成
* 不用每次生成对象,第一次使用生成实例
* 即刚开始类实例对象为null,还未申请内存。在getInstance里针对类实例进行判断
* 为空,即饥饿状态,需要创建后返回,否则直接返回
* @author wybin
*/
private Singleton(){
}
private static instance = null;//先声明一个类本身实例成员。初始化为空。先不申请内存
public static synchronized Singleton getInstance(){
if(instance == null) instance = new Singleton();
return instance;
}

}


标红的instance为什么没有类型呢?我自认为应该是private static SingleTon instance = null; 求大神解释!
...全文
464 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
静山晚风 2014-03-17
  • 打赏
  • 举报
回复
这不废话么,肯定是 要加类型啊
廉月程 2014-03-15
  • 打赏
  • 举报
回复
好吧,这代码是网上复制的,我说怎么这么别扭呢!谢谢各位的指点!
日知己所无 2014-03-15
  • 打赏
  • 举报
回复
http://sourcemaking.com/design_patterns/singleton/java/1

public class Singleton {
  // Private constructor prevents instantiation from other classes
  private Singleton() {}
 
  /**
   * SingletonHolder is loaded on the first execution of Singleton.getInstance() 
   * or the first access to SingletonHolder.INSTANCE, not before.
   */
  private static class SingletonHolder { 
    private static final Singleton INSTANCE = new Singleton(); // 这里不是有个类型Singleton吗?
  }

  public static Singleton getInstance() {
    return SingletonHolder.INSTANCE;
  }
}
haha_321 2014-03-15
  • 打赏
  • 举报
回复
肯定有类型的。。。你这个错了。
姜小白- 2014-03-15
  • 打赏
  • 举报
回复
private static instance = null;
写漏了,应该是
private static Singleton instance = null;
teemai 2014-03-15
  • 打赏
  • 举报
回复
要类型的。你这代码编译都过补了吧

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧