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

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

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

Monostate模式相关推荐

  1. Singleton 和 Monostate 模式

    Singleton 和 Monostate 模式 怎样才能使得两个实例表现得像一个对象呢?很简单,只要把所有的变量都变成静态变量即可. public class Monostate {private ...

  2. Singleton 与 MonoState 模式

      1. Singleton 模式的不同实现形式 1) 最简单的Sigleton (无线程同步, 不适应多线程环境) using System; public class Singleton { pr ...

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

    一.单件模式 英文叫做sington.其他语言中有叫做单例模式,其实都是一样的道理.保证只会出现单个实例,所以是单例.翻译成单件,永远只会产生一件,呵呵. 还有翻译成单元素模式.其实关键是看这个英文比 ...

  4. C++和双重检查锁定模式(DCLP)的风险

    转自: http://blog.jobbole.com/86392/ 多线程其实就是指两个任务一前一后或者同时发生. 1 简介 当你在网上搜索设计模式的相关资料时,你一定会找到最常被提及的一个模式:单 ...

  5. C++ API 设计 08 第三章 模式

    第三章 模式 前一章所讨论的品质是用来区分设计良好和糟糕的API.在接下来的几个章节将重点关注构建高品质的API的技术和原则.这个特殊的章节将涵盖一些有用的设计模式和C++ API设计的相关习惯用法. ...

  6. 敏捷软件开发:原则、模式与实践pdf

    下载地址:网盘下载 内容简介  · · · · · · 在本书中,享誉全球的软件开发专家和软件工程大师Robert C.Martin将向您展示如何解决软件开发人员.项目经理及软件项目领导们所面临的最棘 ...

  7. [转]深一层看Singleton

    深一层看Singleton Singleton模式通常被认为是比较容易理解和运用的设计模式.目前,网上已经有相当多的资料讲解Singleton的基础知识,本文试图避免重复性的介绍,而是尝试从不同的角度 ...

  8. python单例设计模式(待补充)

    要点概论: 1. 理解单例设计模式 2. 单例模式中的懒汉式实例化 3. 模块级别的单例模式 4. Monostate单例模式 5. 单例和元类 6.单例模式Ⅰ 7. 单例模式Ⅱ 8. 单例模式的缺点 ...

  9. 设计模式的1000+篇文章总结

    设计模式的1000+篇文章总结 本文收集和总结了有关设计模式的1000+篇文章,由于篇幅有限只能总结近期的内容,想了解更多内容可以访问:https://www.ai2news.com/, 其分享了有关 ...

最新文章

  1. N皇后的问题——算法的思想:回溯和剪枝
  2. Spring @Async注解
  3. CLAMAV 杀毒软件安装及使用配置
  4. bzoj3697 采药人的路径
  5. 【转载】我心目中最好的框架组合是
  6. mysql 锁 代码_MySQL中的锁实例
  7. python 菜品识别_利用百度智能云结合Python体验图像识别(来自qylruirui)
  8. Problem 69:Totient maximum
  9. kvm虚拟化管理平台WebVirtMgr部署-完整记录(安装Windows虚拟机)-(4)
  10. 安装sql2005,没有SQL Server management studio的原因分析及解决方案
  11. 蓝桥杯历年真题分类汇总(史上最全版本,一定不要错过)
  12. tarjan算法 java_最大强连通图算法 Tarjan算法 (图论)
  13. ESP8266-连接阿里云示例
  14. 计算机导论的答案,计算机导论答案
  15. hpe服务器中ilo的作用,产品技术-HPE iLO-新华三集团-H3C
  16. 离散数学及其应用复盘 | 第3版第4章——谓词逻辑思维导图梳理(复习专用)
  17. JSTL引发的内存泄露
  18. Windows打印管理解决方案
  19. P1567_统计天数
  20. 武汉疫情 - 新型冠状病毒信息整理

热门文章

  1. java holder_Java DataHolder.supports方法代码示例
  2. mysql中更改字符集为utf8mysql中文输入不了问题解决
  3. Vivaldi解决flash插件问题
  4. XSS(跨站脚本攻击)漏洞解决方案
  5. 【Golang】解决Go test执行单个测试文件提示未定义问题
  6. 在Chrome中禁用同一来源政策
  7. ios 销毁当前页面重新开启_利用Vue中keep-alive,快速实现页面缓存
  8. SpringBoot整合springDataJPA
  9. Jquery,ajaxFileUpload插件完成图片上传
  10. html表示主题内容的标签是,HTML 基本标签