博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Monostate模式
阅读量:6575 次
发布时间:2019-06-24

本文共 577 字,大约阅读时间需要 1 分钟。

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


Monostate模式的好处在于:

透明性:
使用Monstate对象和使用常规(regular)对象没有什么区别。使用者不需要知道对象是Monostate。

可派生性:
Monostate的派生类都是Monostate。事实上,Monostate的所有派生类都是同一个Monostate的一部分。它们共享相同的静态变量。

多态性:
同于Monostate的方式不是静态的,所以可以在使用派生类中覆写它们。因此,不同的派生类可以基于相同的静态变量表现出不同的行为。


Monostate模式的代价在于:

不可转换性:
不能透过派生类把常规类转换成Monostate类。

效率问题:
因为Monostate是真正的对象,所以会导致许多的创建和摧毁开销。

内存占用:
即使从未使用Monostate,它的变量也要占据内存空间。

平台局限性:
Monostate不能跨多个JVM或者多个平台工作。

转载地址:http://qpwno.baihongyu.com/

你可能感兴趣的文章
__slots__用法以及优化
查看>>
分部积分的图形解释
查看>>
idea常用快捷键大全(转)
查看>>
HashMap和Hashtable的区别 源码分析
查看>>
Git初始化仓库
查看>>
mysql利用timestamp来进行帖子排序
查看>>
SQL Server 管理常用的SQL和T-SQL
查看>>
Microsoft Orleans 之 入门指南
查看>>
MySoft.Data 2.7.3版本的GitHub托管(ORM升级封装)
查看>>
eclipse各版本代号
查看>>
mysql 配置 utf8 依然乱码
查看>>
089实战 Nginx的安装
查看>>
Laravel 使用多个数据库的问题。
查看>>
overridePendingTransition简介
查看>>
7 -- Spring的基本用法 -- 5... Spring容器中的Bean;容器中Bean的作用域;配置依赖;...
查看>>
Ubuntu开机自启动
查看>>
iOS程序启动原理
查看>>
HTTP协议 - 协议格式
查看>>
PHP实反向代理-收藏
查看>>
Codeforces Round #394 (Div. 2) A. Dasha and Stairs 水题
查看>>