那位高手解释一下有状态的单例模式

king_wjb 2008-04-02 05:57:14
那位高手解释一下有状态的单例模式。
这个状态怎么持有、怎么改变?改变后,所有使用这个单例的状态是否都改变了?
最好能举个例子,谢谢!
...全文
204 9 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
gaoteng1984 2008-07-18
  • 打赏
  • 举报
回复
通过Observer模式可以通知到“所有持有这个单例的对象们”,通知其状态改变。
纯单例模式,只有1个对象,自然只有1个状态。
如果使用了Copy-On-Write,就不是纯单例模式了。
zyw052553 2008-06-22
  • 打赏
  • 举报
回复
这是我在网上搜到的:

单例模式也属创建模式的一种.确保某个类只有一个实例.而且自行实例化并向整个系统提供此实例.

1. 只有一个实例.

2. 自行实例化.

3. 向整个系统提供其实例.

单例模式分为饿汉式和懒汉式.(构造子均为私有)

饿汉式单例类指的是在类中声明一个静态变量,并初始化为一个本类实例.然后在类中提供一个公共方法返回其实例.以下是示例代码:

public class EagerSingleton {
public static EagerSingleton eagerInstance = new EagerSingleton();

private EagerSingleton(){}

public static EagerSingleton getInstance(){
return eagerInstance;
}

}

懒汉式单例类指的是在自己第一个被引用时将自己实例化.

public class LazySingleton {
public static LazySingleton lazyInstance = null;

private LazySingleton(){}

synchronized public static LazySingleton getInstance(){
if(lazyInstance == null){
lazyInstance = new LazySingleton();
}
return lazyInstance;
}

}

有状态单例类:

它是一种可变对象.比如一个单例对象可以持有一个int类型的属性,用来给系统提供一个数值惟一的序列号.

无状态单例类.

无状态单例类即是不变对象.比如一个提供工具函数的对象.

在多个JVM分散式系统或多个类加载器的情况下,应避免使用有状态单例类.

多例模式是单例模式的推广. 它是多个单例的聚集.可以根据需要创建任意个对象. 比如一个系统里面读取资源文件的对象中,构造对象时需要包含语言,区域等信息,创建对应的local对象然后来读取正确的资源文件. 此时,为了支持国际化,就可能需要用到多例模式.针对每一种区域/语言都创建一个惟一的对象,存放在一个集合中.
michaelwangwh 2008-05-23
  • 打赏
  • 举报
回复
偶系菜鸟,不清楚lz的需求 如果是按照4楼的理解有notify的那就加上observer,如果不需要notify就简单聚合一个静态的状态字段就行了, orz
iGoo 2008-04-30
  • 打赏
  • 举报
回复
你说的意思是~~~~当一个状态被改变那么所有和这个状态关联的操作都被执行,
而这个状态的源头是唯一实例?那么用单件模式 + 发布者模式就好了~
meiZiNick 2008-04-30
  • 打赏
  • 举报
回复
等待牛人来答.
knowledge_Is_Life 2008-04-30
  • 打赏
  • 举报
回复
这个简单啊,网上搜一下就得到答案了.
UltraBejing 2008-04-30
  • 打赏
  • 举报
回复
接分是王道!
wudichong 2008-04-10
  • 打赏
  • 举报
回复
某愧,助顶
king_wjb 2008-04-07
  • 打赏
  • 举报
回复
没有人?

3,409

社区成员

发帖
与我相关
我的任务
社区描述
专题开发/技术/项目 设计模式
社区管理员
  • 设计模式
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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