1 / 54
文档名称:

软件设计模式期中.pdf

格式:pdf   页数:54页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

软件设计模式期中.pdf

上传人:顾生等等 2015/12/23 文件大小:0 KB

下载得到文件列表

软件设计模式期中.pdf

相关文档

文档介绍

文档介绍:设计模式
Part I
张严辞
场景1
回顾:在HIVE工厂中,使用类CFactoryData来实
现产品-具体工厂目录
问题: 整个系统只能有唯一目录, 即
CFactoryData只能有一个实例
四川大学软件学院
解决方案1
使用全局变量
缺陷:不能保证CFactoryData只有唯一实例,任
何程序都可以创建新的实例
期望CFactoryData被创建出一个实例后,不能再
创建出其他实例
四川大学软件学院
解决方案2 1/3
单例模式
四川大学软件学院
解决方案2 2/3
CFactoryData的构造函数被宣称为保护成员
外部失去创建CFactoryData的能力
四川大学软件学院
解决方案2 3/3
CFactoryData的创建在类的内部完成
通过一个静态局部变量pInstance来保存创建的对象
通过一个if语句来保证CFactoryData只会被创建一次
通过CFactoryData::getInstance()来获取创建的对象
课堂讨论:这个解决方案是否有缺陷?
四川大学软件学院
解决方案3 1/3
方案2的缺陷:无法被其他类复用唯一实例功能
能否设计一个基类,实现唯一实例功能,其他凡
是需要这个功能的类都从该基类派生?
难点:如何在基类中创建出派生类的对象?
四川大学软件学院
解决方案3 2/3
通过模板来解决难点
四川大学软件学院
解决方案3 3/3
派生新的类
CSingleton类得到了复用
四川大学软件学院
单例模式
解决方案2和3即为单例模式
目的:保证一个类仅有一个实例,并提供一个访
问它的全局访问点
拥有一个私有构造函数,确保用户无法通过new关键字
直接实例化它
包含一个静态私有成员变量与静态的创建实例的方法
四川大学软件学院