吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3301|回复: 3
收起左侧

[C&C++ 转载] <漫谈设计模式>======对象创建型模式之单例模式

 关闭 [复制链接]
Chenxs110 发表于 2012-8-14 23:24
单例模式
1.作用:
   保证一个类仅有一个实例,并且提供一个访问它的全局访问点.
2.使用动机
   保证一个类只能有一个实例,也就是你无法通过new操作符不受限制的生成对象实例.
3.适用范围
<1>当类只能有一个实例,而且客户可以从一个众所周知的访问点访问它时.
<2>当这个唯一的实例应该是通过子类化可以拓展的,并且客户应该无需更改代码就能使用一个拓展的实例时.
4.对象结构图
1111.jpg
5.实现
   Singeton模式使得这个唯一的实例是类的一般实例,但该类被写成只有一个实例能被创建.做到这一点的一个常用方法就是
将创建这个类的实例操作隐藏在一个类操作中(也就是一个静态成员函数或者是一个类方法).由它保证只有一个实例被创建.
这个静态成员函数可以访问一个保存唯一实例的变量,而且它还可以保证这个变量在返回值之前用这个唯一的实例初始化.
同时还要将构造函数私有化,限制对象的创建只能在该类中进行(给构造函数添加private访问权限的后果).

C++ code:
class文件
class Singleton  
{
private:
    static Singleton * _Instance;
        Singleton();
public:
        static Singleton * Instance();
        virtual ~Singleton();

};
实现文件
Singleton * Singleton::_Instance = 0;
Singleton::Singleton()
{

}

Singleton::~Singleton()
{

}

Singleton * Singleton::Instance()
{
        if (_Instance == 0)
        {
                _Instance = new Singleton;
        }
        return _Instance;
}
这样就实现了最简单的Singleton模式.

已知应用
metaclass(元类)
一个元类是一个类的类,而且每个元类有一个实例,元类没有名字,但是他们记录了它们的唯一实例并且通常不会再创建其他实例.


发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| Chenxs110 发表于 2012-8-14 23:30
沙发  备份一个 后续编辑
神鸟 发表于 2012-8-16 08:05
 楼主| Chenxs110 发表于 2012-8-16 09:11
GOF的23个常用的 都会列出来的 慢慢更新 这个还没写完 公司也不能上网 只有回家才能写
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-1 07:08

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表