设计模式-单例模式

单例模式

保证一个类、只有一个实例存在,同时提供能对该实例加以访问的全局访问方法。
必须满足三个条件:某个类只能有一个实例、它必须自行创建这个实例、它必须自行向整个系统提供这个实例。
Singleton(单例):在单例类的内部实现只生成一个实例,同时它提供
一个静态的getInstance()工厂方法,让客户可以访问它的唯一实例;为了防止
在外部对其实例化,将其构造函数设计为私有;在单例类内部定义了一个
Singleton类型的静态对象,作为外部共享的唯一实例。

单例模式的使用步骤
a) 构造函数私有化。
b) 提供一个全局的静态方法(全局访问点)来获取单例对象。
c) 在类中定义一个静态指针,指向本类的变量的静态变量指针 。

#include	<iostream>	
using namespace	std;
/*懒汉模式*/
class	Singelton
{
public:
	/*
	对外提供⼀个全局的静态⽅法
						*/
	static Singelton* getInstance() {
		/*
		懒汉式:	在调⽤全局静态⽅法,获取单例的时候,
		再进⾏创建。懒汉式的单例创建在程序的执⾏中进⾏。
											*/
		if (instance == NULL) {
			instance = new	Singelton;
		}
		m_count++;
		return	instance;
	}
	int	getCount() {
		return	m_count;
	}
private:
	/*
	构造函数私有化
						*/
	Singelton() {
		instance = NULL;
		m_count = 0;
		cout << "构造函数	singelton()	执⾏" << endl;
	}
	/*
	在类中定义⼀个静态指针,指向本类的变量的静态变量指针
						*/
	static	Singelton	*instance;
	static int	m_count;
};
/*
对静态变量的初始化,要放在类的外部,
即,放在全局位置上。
	*/
Singelton	*	Singelton::instance = NULL;
int	Singelton::m_count = 0;
/*
饿汉模式
*/
class	Singelton2 {
public:
	static	Singelton2*	getInstance() {
		m_count++;
		return	instance;
	}
	int	getCount() {
		return	m_count;
	}
private:
	Singelton2() {
		instance = NULL;
		m_count = 0;
	}
	static	Singelton2	*	instance;
	static int	m_count;
};
/*
饿汉式的不是在全局静态⽅法中创建,
⽽是不管你创不创建实例,我在声明的
时候就创建出来,
饿汉式的单例,是在编译的时候就已经创建好了。
	*/
Singelton2	*	Singelton2::instance = new	Singelton2;
int	Singelton2::m_count = 0;

未完待续。。。

基于html+python+Apriori 算法、SVD(奇异值分解)的电影推荐算法+源码+项目文档+算法解析+数据集,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用,详情见md文档 电影推荐算法:Apriori 算法、SVD(奇异值分解)推荐算法 电影、用户可视化 电影、用户管理 数据统计 SVD 推荐 根据电影打分进行推荐 使用 svd 模型计算用户对未评分的电影打分,返回前 n 个打分最高的电影作为推荐结果 n = 30 for now 使用相似电影进行推荐 根据用户最喜欢的前 K 部电影,分别计算这 K 部电影的相似电影 n 部,返回 K*n 部电影进行推荐 K = 10 and n = 5 for now 根据相似用户进行推荐 获取相似用户 K 个,分别取这 K 个用户的最喜爱电影 n 部,返回 K*n 部电影进行推荐 K = 10 and n = 5 for now Redis 使用 Redis 做页面访问次数统计 缓存相似电影 在使用相似电影推荐的方式时,每次请求大概需要 6.6s(需要遍历计算与所有电影的相似度)。 将相似电影存储至 redis 中(仅存储 movie_id,拿到 movie_id 后还是从 mysql 中获取电影详细信息), 时间缩短至:93ms。 十部电影,每部存 top 5 similar movie 登录了 1-6 user并使用了推荐系统,redis 中新增了 50 部电影的 similar movie,也就是说,系统只为 6 为用户计算了共 60 部电影的相似度,其中就有10 部重复电影。 热点电影重复度还是比较高的
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值