设计模式纵谈--单件模式
来源:互联网 发布:家庭紫外线消毒 知乎 编辑:程序博客网 时间:2024/06/11 04:59
模式分类
从目的来看:
--创建型模式:负责对象创建。
--结构型模式:处理类与对象间的组合。 组合和继承
--行为型模式:类与对象交互中的职责分配。组件之间的行为。
隔离变化 封装变化
从范围来看:
--类模式处理类与子类的静态关系。
--对象模式处理对象间的动态关系。
动机 Motivation
在软件系统中,经常有这样一些特殊类,必须保证它们在系统中只存在一个实例,才能
确保它们的逻辑正确性,以及良好的效率。
如何绕开常规的构造器,提供一种机制来保证一耳光类只有一个实例?
这应该是类设计者(类本身)得责任,而不是使用者(客户)的责任。
意图 Intent
保证一个类仅有一个实例,并提供一个该实例的全局访问点。
结构 Structure
单线程Singleton模式的几个要点
《1》Singleton模式中的实例构造器可以设置为 protected以允许子类派生
《2》Singleton模式一般不要支持ICloneable接口,因为这可能导致多个对象实例
《3》Singleton模式一般不要支持序列化,因为这也有可能导致多个对象实例。
《4》Singleton模式只考虑到了对象创建管理,没有考虑对象销毁的管理,就支持垃圾回收的平台和对象的开销来讲
,我们一般没有必要对其销毁进行特殊的管理。
真正写的好的代码是一看就明白,就清楚含义。越简单,越好。代码让人一看,就明白,就是高手写的代码
简单就是美。
注释不是越多越好,通过方法名和代码块就能很清楚理解代码的含义,才是好的代码,好的设计。
Singleton模式扩展
《1》将一个实例扩展到N个实例,例如对象池的实现。 【多例模式】
《2》将new构造器的调用转移到其他类中,例如多个类协同工作环境中,某个局部环境只需要拥有某个类
的一个实例
《3》理解和扩展Singleton模式的核心是 如何控制用户使用new对一个类的实例构造器的任意调用。
模式不是死的。模式是解决一类问题,但是一类问题也会变化。
推荐参考书
• 《设计模式:可复用面向对象软件的基础》GoF
• 《面向对象分析与设计》Grady Booch
• 《敏捷软件开发:原则、模式与实践》Robert C. Martin
• 《重构:改善既有代码的设计》Martin Fowler
• 《Refactoring to Patterns》Joshua Kerievsky
- 设计模式纵谈--单件模式
- 设计模式纵谈1
- 设计模式纵谈
- 设计模式纵谈4-Builder
- 设计模式纵谈5-Factory
- 设计模式纵谈--Interpreter,Iterator
- 设计模式-单件
- 【设计模式】单件
- 设计模式---单件
- 设计模式------单件模式
- 设计模式--单件模式
- 设计模式 -- 单件模式
- 设计模式:单件模式
- 设计模式-单件模式
- 设计模式-单件模式
- 设计模式 单件模式
- 设计模式:单件模式
- 设计模式----单件模式
- 开发人员一定要加入收藏夹的网站 .
- oracle移动分区
- 黑马程序员-反射的应用
- 用cocos2d-x做一个简单的windows phone 7游戏:墓碑机制和收尾工作(完)
- Ubuntu软件安装笔记
- 设计模式纵谈--单件模式
- Oracle 函数大全
- C++第十周【任务3】类的继承和派生
- 第十周实验报告(任务三)【派生类2】
- 第十周【任务1】在下面一段类的定义中,需要填充的函数由注释内容给出了功能。
- zoj 3602 Count the Trees 二叉树HASH 浙江省第9届大学生程序设计竞赛 第三题
- ARM-linux内存管理
- 2012C++程序设计实验报告【10.3】
- 第十周实验报告任务3 先建一个Point类