02 设计模式02 (单例模式).ppt
《02 设计模式02 (单例模式).ppt》由会员分享,可在线阅读,更多相关《02 设计模式02 (单例模式).ppt(16页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、The Singleton Pattern(单例模式)学习问题n在许多场合,我们希望某个类只能有一个实例。因为如果该类有多个实例同时存在可能会导致一些问题的出现。如:一个计算机系统可以有多台打印机,但打印机管理器只能有一个运行,每台打印机也只能有一个实例对象。如何创建一个对象n假设你的类为MyObject,你怎样创建一个对象?nnew MyObject();n如果另一个对象想创建一个MyObject对象,他是不是可以再对MyObject调用new操作?n如果该类是public的,就可以。n如果该类不是public的,则只有同一个包中的类可以将它实例化,但是仍然可以将它实例化多次。如何创建一个对
2、象n你可不可以这样做?Public class MyClass private MyClass()n讨论:这个类能被实例化吗?n讨论:有没有对象可以调用构造方法MyClass()?如何创建一个对象n下面的代码意味着什么?Public class MyClass public static MyClass getInstance()nMyClass是一个具有静态方法的类,可以这样调用其静态方法:MyClass.getInstance();如何创建一个对象n如果我们把上面两段代码和在一起会怎么样?Public class MyClass private MyClass()public static
3、 MyClass getInstance()n那么,是不是有另一种实例化一个对象的方法呢?实例化一个对象Public class MyClass private static MyClass uniqueInstance;/其他成员变量声明 private MyClass()public static MyClass getInstance()if(uniqueInstance=null)uniqueInstance=new MyClass();return uniqueInstance /其他成员方法声明n类MyClass是不是只能有一个实例对象?懒汉式单例类Public class Laz
4、ySingleton private static MyClass uniqueInstance;/其他成员变量声明 private LazySingleton()public static MyClass getInstance()if(uniqueInstance=null)uniqueInstance=new LazySingleton();return uniqueInstance /其他成员方法声明n类LazySingleton只在第一次被引用时才实例化,静态加载该类并不会将他自己实例化。单例模式的关键特征n意图:希望类只有一个实例,但没有控制类实例化的全局变量(对象)。同时希望确保
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 02 设计模式02 单例模式 设计 模式
限制150内