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

king_wjb 2008-04-02 05:57:14
那位高手解释一下有状态的单例模式。
这个状态怎么持有、怎么改变?改变后,所有使用这个单例的状态是否都改变了?
最好能举个例子,谢谢!
...全文
215 9 打赏 收藏 转发到动态 举报
写回复
用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
  • 打赏
  • 举报
回复
没有人?
(1)UML样例源文件(8个样例文件) uml/uml.mdl //01.UML快速入门 uml/usecase.mdl //02.用例图 uml/class.mdl //03.静态图——类图、对象图、包图 uml/component.mdl //04.实现图——组件图与部署图 uml/statechart.mdl //05.行为图——状态图 uml/activity.mdl //06.行为图——活动图 uml/sequence.mdl //07.交互图——序列图 uml/collaboration.mdl //08.交互图——协作图 (2)UML上机演练源文件(16个实例文件) uml/usecase_product.mdl //02.用例图——企业产品生产销售管理系统 uml/class_login.mdl //03.类图和包图——企业信息管理系统用户登录和注册模块 uml/component_emis.mdl //04.组件图与部署图——企业信息管理系统 uml/statechart_bug.mdl //05.状态图——Bug管理系统 uml/statechart_atm.mdl //05.状态图——ATM机存取款 uml/statechart_thread.mdl //05.状态图——Java线程类Thread uml/activity_bug.mdl //06.活动图——Bug管理系统 uml/activity_atm.mdl //06.活动图——ATM机存取款 uml/activity_thread.mdl //06.活动图——Java线程类Thread uml/sequence_bug.mdl //07.序列图——Bug管理系统 uml/sequence_atm.mdl //07.序列图——ATM机存取款 uml/sequence_tel.mdl //07.序列图——打电话 uml/collaboration_bug.mdl //08.协作图——Bug管理系统 uml/collaboration_atm.mdl //08.协作图——ATM机存取款 uml/collaboration_tel.mdl //08.协作图——打电话 uml/bug.mdl //09.综合实例——Bug管理系统 (3)设计模式样例(24个讲解样例程序) pattern/src/principle/liskovsubstitution//10.3.2里氏代换原则 pattern/src/creation/factorymethod //11.1工厂方法模式 pattern/src/creation/abstractfactory //11.2抽象工厂模式 pattern/src/creation/singleton //11.3单例模式 pattern/src/creation/builder //11.4建造者模式 pattern/src/creation/prototype //11.5原型模式 pattern/src/structure/adapter //12.1适配器模式 pattern/src/structure/decorator //12.2装饰器模式 pattern/src/structure/proxy //12.3代理模式 pattern/src/structure/facade //12.4外观模式 pattern/src/structure/bridge //12.5桥接模式 pattern/src/structure/composite //12.6组合模式 pattern/src/structure/flyweight //12.7享元模式 pattern/src/behavior/strategy //13.1策略模式 pattern/src/behavior/templatemethod //13.2模板方法模式 pattern/src/behavior/observer //13.3观察者模式 pattern/src/behavior/iterator //13.4迭代子模式 pattern/src/behavior/chainofresponsibility//13.5责任链模式 pattern/src/behavior/command //13.6命令模式 pattern/src/behavior/memento //13.7备忘录模式 pattern/src/behavior/state //13.8状态模式 pattern/src/behavior/visitor //13.9访问者模式 pattern/src/behavior/mediator //13.10中介者模式 pattern/src/behavior/interpreter //13.11解释器模式 (4)SOA(12个程序包) soa/JAXWSHelloWorldServer.zip //15.JAX-WS服务端——HelloWorld实例 soa/JAXWSHelloWorldClient.zip //15.JAX-WS客户端——HelloWorld实例 soa/AxisHelloWorldServer.zip //16.Axis服务端——HelloWorld实例 soa/AxisHelloWorldClient.zip //16.Axis客户端——HelloWorld实例 soa/SCAJavazip //19.SCA实例——计算器实例 soa/SCAWSServer.zip //19.SCA服务端实例——HelloWorld实例 soa/SCAWSClient.zip //19.SCA客户端实例——HelloWorld实例 soa/OSGiHelloWorld.zip.zip //21.OSGi实例——HelloWorld实例 soa/demo.sql //24.SOA服务架构实战——企业信息管理系统数据库脚本 soa/ssh2.zip //24.SOA服务架构实战——企业信息管理系统SSH2代码 soa/EmisWeb.zip //24.SOA服务架构实战——企业信息管理系统SCA服务端 soa/EmisService.zip //24.SOA服务架构实战——企业信息管理系统Web端

3,409

社区成员

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

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