什么时候静态?什么时候单例?

etl2007 2008-04-22 10:23:32
现在程序代码是这样的,用的是单例模式
可是选择单例模式有何优势,感觉单例模式做的事情,静态方法都能做??
请大吓指教一下

public class LogWriter {
static private Logger logger = Logger
.getLogger(SqlBenchSessionFactory.class);

private static LogWriter instance;

/**
* 缺省构造函数
*/
private LogWriter() throws RemoteException {

}

synchronized public static LogWriter instance() throws RemoteException {
if (instance == null) {
instance = new LogWriter();
}
return instance;
}

// 获取RMI服务,写入日志到数据库
public void writeLog(SqlLog log) {
}

}
...全文
269 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gongyali2005 2008-04-22
  • 打赏
  • 举报
回复
难道你想同时登陆两个相同的QQ?
cyj18 2008-04-22
  • 打赏
  • 举报
回复
单例:分两种..一种是懒汉模式,一种是饿汉模式,你上面的那种就是懒汉模式,只有在用的时候才去实例化..但是不用加synchronized ,
饿汉模式就是静态初始化.就是一开始就实例化.不管要不要用.....至于什么时候用什么...自己选吧..呵呵.
shadowlin 2008-04-22
  • 打赏
  • 举报
回复
..........不多线程还有同步的问题么?
anqini 2008-04-22
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 caoyinghui1986 的回复:]
引用 2 楼 anqini 的回复:
单例的话,只能用这个类的某个方法来得到它的实例。
静态的话,你可以调用它的构造方法来得到它的实例。
按你这个程序,用静态的话没必要用这个synchronized 关键字来保持同步吧!
纯属个人见解!有错请纠正


"静态的话没必要用这个synchronized "不是很赞同啊.
在多线程并发访问的情况下 静态 并不可能保证线程安全啊.
[/Quote]
阿,谢谢你的建议,我接受了!我说话太偏面了!没考虑到多线程,呵呵
Shine_Panda 2008-04-22
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 anqini 的回复:]
单例的话,只能用这个类的某个方法来得到它的实例。
静态的话,你可以调用它的构造方法来得到它的实例。
按你这个程序,用静态的话没必要用这个synchronized 关键字来保持同步吧!
纯属个人见解!有错请纠正
[/Quote]

"静态的话没必要用这个synchronized "不是很赞同啊.
在多线程并发访问的情况下 静态 并不可能保证线程安全啊.
oxoxo 2008-04-22
  • 打赏
  • 举报
回复
没什么区别,单例就是利用静态来实现的
不过,单例不能再初始化,静态是可以再初始化的
Shine_Panda 2008-04-22
  • 打赏
  • 举报
回复
值得关注
顶下............
anqini 2008-04-22
  • 打赏
  • 举报
回复
单例的话,只能用这个类的某个方法来得到它的实例。
静态的话,你可以调用它的构造方法来得到它的实例。
按你这个程序,用静态的话没必要用这个synchronized 关键字来保持同步吧!
纯属个人见解!有错请纠正
zyf_xl 2008-04-22
  • 打赏
  • 举报
回复
Java 技术交流群!入群先看公约!

本群公约:互助、互勉、共同进步!惑则问、知则答、不知则表示关注。帮助新手、细心回答。
同意上述公约者·申请加入!
QQ群号:25922618(一群)-----人员快满
QQ群号:17615698(二群)-----最近新群

62,623

社区成员

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

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