设计模式有感第一集(组合原则与只需要生成一次对象的类设计)

本文介绍了一种推荐的设计模式——单例模式,并通过具体实现展示了如何确保类的对象全局唯一且延迟加载。同时强调了面向对象设计中应多使用组合而非继承的原则。
 1。多用组合,少用继承。多利用多态,重载,运行时确定类型的特性去设计类。

2。对于只能构造一次的对象。并且对上层隐藏细节。不管其调用几次。都只会生成一次。例如:动态库封装的用户线程对象,全局唯一对象等。
类可以这样设计:

//----Singleton.H--- 
//云中哈哈
class Singleton 

public
static Singleton* Instance(); //生成对象
protected:
Singleton();   
//此设计此调用方不能用NEW去生成对象。起到了保护对象的作用
private
static Singleton* _instance; //对象句柄
}
;

 

//----Singleton.cpp---
//云中哈哈
//2007-12-11
Singleton* Singleton::_instance = 0;

Singleton::Singleton() 

cout
<<"Singleton...."<<endl; 
}


Singleton
* Singleton::Instance() 
{
if (_instance == 0

   _instance 
= new Singleton(); // 此只生成一次对象!
}
 
return _instance; 
}

 

//----MAIN.CPP
//云中哈哈
//2007-12-11
#include "Singleton.h"
#include 
<iostream> 
using namespace std;

int main(int argc,char* argv[]) 

Singleton
* sgn = Singleton::Instance();
Singleton
* sgn2 = Singleton::Instance(); //本次会通过但无效果。因为只能构造一次!
//Singleton* sgn3 = new Singleton();   //本句会出错。这样就不能用NEW去生成对象了!
return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值