设计模式纵谈--单件模式

模式分类

从目的来看:

--创建型模式:负责对象创建。

--结构型模式:处理类与对象间的组合。 组合和继承

--行为型模式:类与对象交互中的职责分配。组件之间的行为。

隔离变化 封装变化


从范围来看:

--类模式处理类与子类的静态关系。

--对象模式处理对象间的动态关系。


动机 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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

tof21

支持原创

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值