Monostate模式

请注意这两个模式的区别,在于一个关注行为,而另一个关注结构。Singleton模式强调结构上的单一性。它防止创建多个对象实例。相反,Monostate模式则强制行为上的单一性,而没有加强结构方面的限制。为了强调这个区别,请考虑如下事实:Monostate的测试用例对Singleton类是有效的,但是Singleton的测试用例对却远不适用于Monostate类。

Monostate模式的好处在于:
透明性:使用Monstate对象和使用常规(regular)对象没有什么区别。使用者不需要知道对象是Monostate。
可派生性:Monostate的派生类都是Monostate。事实上,Monostate的所有派生类都是同一个Monostate的一部分。它们共享相同的静态变量。
多态性:同于Monostate的方式不是静态的,所以可以在使用派生类中覆写它们。因此,不同的派生类可以基于相同的静态变量表现出不同的行为。

Monostate模式的代价在于:
不可转换性:不能透过派生类把常规类转换成Monostate类。
效率问题:因为Monostate是真正的对象,所以会导致许多的创建和摧毁开销。
内存占用:即使从未使用Monostate,它的变量也要占据内存空间。
平台局限性:Monostate不能跨多个JVM或者多个平台工作。

时间: 2024-11-13 07:53:46

Monostate模式的相关文章

PHP 中实现 Singleton 模式和 Monostate 模式

http://www.phpweblog.net/young40/archive/2007/11/21/2365.html 通常来说,类和对象(类的实例)之间是一对多的关系.但是某些情况下,我们只需要一个类的一个实例.比如多个实例的多样性反倒会带来一些不可控因素,多次的实例化,是一种资源的浪费,降低了效率:又如他们是工厂对象(factoryobject),用来创建系统中的其他对象,等等.这时候,较好的处理方式就是让类的实例具有单一性:保障这个类在运行过程中最多生成一个实例( Singleton

《敏捷软件开发:原则、模式与实践(C#版.修订版)》一导读

前 言 20世纪90年代初,我(Bob)写了一本名为Designing Object-Oriented C++ Application using the Booch Method的书.它曾是我的代表作,其效果和销量都让我非常高兴. 这本书最初想作为Designing一书的第2版,但是结果却并非如此.书中所保留的原书内容非常少,只有3章内容,即便这3章也进行了大量的修改,但书的意图.精神以及许多知识是相同的.自Desinging出版10年以来,在软件设计和开发方面我又学到了非常多的知识,这些将在

php设计模式总结-单件模式

一.单件模式 英文叫做sington.其他语言中有叫做单例模式,其实都是一样的道理.保证只会出现单个实例,所以是单例.翻译成单件,永远只会产生一件,呵呵. 还有翻译成单元素模式.其实关键是看这个英文比较好.英文是sington,统一是使用这个单词. 单件模式的目的我理解如下: 避免重复创建(实例化)对象,已经有现成的实例就用现成的. 减少资源的浪费(因为创建多个实例,浪费内存,完全没必要),单件模式保证了每时每刻引用的都是同一个实例. 为什么同时创建多个实例会引起逻辑上的错误呢? $obj1$o

米侠浏览器怎么开启无图模式?

  米侠浏览器是一款非常好用的手机浏览器,用户通过该浏览器可访问wap与www网站,并且支持下载附件.视频观看等多项功能,有时候用户在4G网络下访问网页,势必会因为网页中的图片,为我们造成流量的消耗,想要介绍流量的消耗,我们可通过开启米侠浏览器中的无图模式,来达到节省流量的目的,下面我们看米侠浏览器开启无图模式的方法.   操作方法 1.首先用户打开米侠浏览器,在浏览器窗口下方,点击如下图所示的菜单; 2.在弹出的菜单中,我们点击[无图模式];这时手机浏览器将切换到无图模式了,用户在浏览访问网页

360安全浏览器了解网页浏览模式

360安全浏览器内置了两种网页浏览模式:极速模式和兼容模式,我们会自动为您选择使用适合每个网站的浏览模式.点击地址栏的内核切换按钮,可以手动切换浏览模式. 极速模式采用了全球最快.最新的chromium内核和IE9内核(仅在安装了IE9后可用),可以手动切换内核. 由于部分网页(例如论坛.网银等)在极速模式下出现兼容性问题,显示不正常,这时您可以手动切换到兼容模式来浏览网站,如下图所示.  

了解360极速浏览器极速模式和兼容模式使用的技术

极速模式使用的是Webkit内核,Webkit内核是全球最快速的浏览器内核,同时支持了诸多的网页新标准, 但由于Webkit内核较新,国内一些网站尚未较好地支持此内核. 兼容模式使用的是IE浏览器所使用的 Trident 内核,是国内网页制作时主要兼容的浏览器内核,兼容性问题较少. IE9/IE10模式使用的是IE9/IE10浏览器所使用的新内核,加入了硬件加速.全新的脚本渲染引擎,更标准的HMTL5及CSS3支持.

360极速浏览器的浏览模式是什么

极速模式.兼容模式及IE9高速模式是360浏览器显示网页时使用的三种模式: 表示极速模式 表示兼容模式 表示IE9/IE10模式(仅在安装了IE9或IE10后可用) 360极速浏览器会自动为您选择使用适合每个网站的浏览模式.所以,通常您不用了解几种内核的区别.

360极速浏览器什么是离线模式?

当自动登录失败时(通常是网络设置或服务器等问题导致),将自动进入离线模式. 离线模式下,将会显示360帐户在本地备份的数据,以便您能继续使用自己的收藏夹. 我们会自动为您重试登录,直到登录成功.登录成功后,将自动同步为最新的收藏夹数据.

PhotoShop“相加”和“减去”模式精确选择颜色

一.关于"相加"模式 "相加"模式的公式:[(源1+源2)/缩放]+补偿值=结果 从公式看,结果可以通过缩放值和补偿值进行调整,如果缩放为1,补偿值为0,那么结果=源1+源2.下面,就以此为前提进行讨论. 结论1:R.G.B三个通道中任何两个"相加",结果为第三个通道之外的颜色.即: 1.红+绿=蓝色之外的颜色; 2.红+蓝=绿色之外的颜色; 3.绿+蓝=红色之外的颜色. 很有意思,也很好记吧.给一个自己做的图,通过"计算"试