使用单例模式需要注意的几个问题
2014-04-03 14:32
751 查看
单例模式是最简单的设计模式之一,但是它却存在一些问题与缺陷。下面简单说下单例模式的使用中需要注意的一些问题。
1. 实例指针一定要设为静态吗?
因为GetInstance这个方法要用到该实例指针,且GetInstance这个方法是static的,所以这个指针必须是static的,否则GetInstance无法访问该实例指针。以此同时保证了向其他对象提供唯一的同一个内存区的实例指针。
2. 为什么不弃用懒汉式而直接用饿汉式?
首先,懒汉式是典型的以时间换取空间的例子,就是每次获取实例时都要进行判断,看是否要创建实例,浪费判断时间。当然如果一直没有人用的话,就不会创建实例,则是节约空间。而饿汉式是典型的以空间换取时间,就是说当类装载的时候,就创建出一个实例,不管你用不用它,然后每次调用时就不用判断了,节省了运行时间。
这里说某种方式一定比另一种方式好,它们两者各有各的优势。关键取决于你在时间和空间上效率的取舍。
and so on
详见:
http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380147d8c8c4668d4e419ce3b4c413037bfa6663f405a8e906b6075aa180de1f13523670123b598cf8c4d8aac925f75ce786a6459db0144dc0edfcc5156c637912afede1bf0ce862592dec5a3d84322cc44040a9781f84d701fdd19f10340e2&p=9e7ec54ad6c343f40be29624165f91&newp=882a9545d4822deb05be9b7c1b0a98231610db2151d6d5173eb8d715&user=baidu&fm=sc&query=%B5%A5%C0%FD%B5%C4%CA%B9%D3%C3&qid=&p1=8
1. 实例指针一定要设为静态吗?
因为GetInstance这个方法要用到该实例指针,且GetInstance这个方法是static的,所以这个指针必须是static的,否则GetInstance无法访问该实例指针。以此同时保证了向其他对象提供唯一的同一个内存区的实例指针。
2. 为什么不弃用懒汉式而直接用饿汉式?
首先,懒汉式是典型的以时间换取空间的例子,就是每次获取实例时都要进行判断,看是否要创建实例,浪费判断时间。当然如果一直没有人用的话,就不会创建实例,则是节约空间。而饿汉式是典型的以空间换取时间,就是说当类装载的时候,就创建出一个实例,不管你用不用它,然后每次调用时就不用判断了,节省了运行时间。
这里说某种方式一定比另一种方式好,它们两者各有各的优势。关键取决于你在时间和空间上效率的取舍。
and so on
详见:
http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380147d8c8c4668d4e419ce3b4c413037bfa6663f405a8e906b6075aa180de1f13523670123b598cf8c4d8aac925f75ce786a6459db0144dc0edfcc5156c637912afede1bf0ce862592dec5a3d84322cc44040a9781f84d701fdd19f10340e2&p=9e7ec54ad6c343f40be29624165f91&newp=882a9545d4822deb05be9b7c1b0a98231610db2151d6d5173eb8d715&user=baidu&fm=sc&query=%B5%A5%C0%FD%B5%C4%CA%B9%D3%C3&qid=&p1=8
相关文章推荐
- 使用单例模式需要注意的几个问题
- 使用单例模式需要注意的几个问题
- 使用单例模式需要注意的几个问题
- 使用单例模式需要注意的几个问题
- 使用单例模式需要注意的几个问题
- 使用LIBSVM需要注意的几个问题
- linux下使用静态库需要注意的几个问题
- 使用 linux的几个需要注意的问题(之二)
- 使用qtp需要注意的几个问题
- 使用 linux的几个需要注意的问题(之二)
- Mac下apache使用需要注意的几个问题
- c#中使用SESSION需要注意的几个问题
- 使用异常处理语句需要注意的几个问题
- OpenGL使用模板模板缓冲时需要注意的几个问题
- 使用GDI+时需要注意的几个问题
- 使用crontab需要注意的几个问题
- c#中使用SESSION需要注意的几个问题
- 使用TinyXml库需要注意的几个问题
- NSTimer 在使用中需要注意的几个问题
- 关于RabbitMQ-C入门使用需要注意的几个问题