设计模式笔记之---单例模式

本文详细介绍了设计模式中的单例模式,包括其作用、UML类图和实现方法。通过私有构造函数、静态指针和公共接口确保类只有一个实例,并提供全局访问点。示例代码展示了单例模式在实际应用中的效果,证明了同一实例的共享。

单例模式(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点。   

UML类图:

                  

实现方法:

1.创建一个指向唯一实例的静态指针,并且是私有的。

2.提供一个公用的接口,已获取这个唯一的实例,如果唯一实例不存在,在接口内部首先将它创建出来。

3.将类的构造函数设置为私有的,保证用户不能通过其它方式创建实例。

4.将类的析构函数设置为私有的,因为类只有一个实例,不能让用户随便删除,这样用户调用delete来释放实例对象时,编译器会报错,指示非法。

单例模式基本代码如下:

/********************************************************************
filename: 	Singleton.h
created:	2012-09-24
author:		firehood

purpose:	firehood 学设计模式之---单例模式
*********************************************************************/
#include<stdio.h>
#pragma once

class Singleton
{
public:
	static Singleton* GetInstance(void);
private:
	static void Destory(void);
	Singleton(void);
	~Singleton(void);
    Singleton(const Singleton&);
	Singleton& operator = (const Singleton&);
private:
	static Singleton* pInstance;
};

/********************************************************************
filename: 	Singleton.cpp
created:	2012-09-24
author:		firehood

purpose:	firehood 学设计模式之---单例模式
*********************************************************************/
#include "Singleton.h"
#include <iostream>
using namespace std;

Singleton* Singleton::pInstance = NULL;
Singleton::Singleton(void)
{
}

Singleton::~Singleton(void)
{
}

Singleton* Singleton::GetInstance(void)
{
	if(pInstance == NULL)
	{
		pInstance = new Singleton();
		// 注册终止函数(进程退出时调用)
		atexit(Destory);
	}
	return pInstance;
}

void Singleton::Destory(void)
{
	if(pInstance)
	{
		cout<< "释放实例内存.."<<endl;
		delete pInstance;
		pInstance = NULL;
	}
}


客户端调用代码:

#include "Singleton.h"
#include <iostream>
using namespace std;

int main(int argc,char* argv[])
{
	cout<<"*************************************"<<endl;
	cout<<"firehood 学设计模式之---单例模式"<<endl;
	cout<<"*************************************"<<endl;
    
	Singleton* pInstance1 = Singleton::GetInstance();
	cout<<"实例1:"<<hex<<pInstance1<<endl;

	Singleton* pInstance2 = Singleton::GetInstance();
	cout<<"实例2:"<<hex<<pInstance2<<endl;

	if(pInstance1 == pInstance2)
	{
		cout<<"实例1和实例2为同一个实例"<<endl;
	}
	
	system("pause");
	return 0;
}

运行结果:

*************************************
firehood 学设计模式之---单例模式
*************************************
实例1:003A64E8
实例2:003A64E8
实例1和实例2为同一个实例
请按任意键继续. . .

释放实例内存..


考虑柔性负荷的综合能源系统低碳经济优化调度【考虑碳交易机制】(Matlab代码实现)内容概要:本文围绕“考虑柔性负荷的综合能源系统低碳经济优化调度”展开,重点研究在碳交易机制下如何实现综合能源系统的低碳化与经济性协同优化。通过构建包含风电、光伏、储能、柔性负荷等多种能源形式的系统模型,结合碳交易成本与能源调度成本,提出优化调度策略,以降低碳排放并提升系统运行经济性。文中采用Matlab进行仿真代码实现,验证了所提模型在平衡能源供需、平抑可再生能源波动、引导柔性负荷参与调度等方面的有效性,为低碳能源系统的设计与运行提供了技术支撑。; 适合人群:具备一定电力系统、能源系统背景,熟悉Matlab编程,从事能源优化、低碳调度、综合能源系统等相关领域研究的研究生、科研人员及工程技术人员。; 使用场景及目标:①研究碳交易机制对综合能源系统调度决策的影响;②实现柔性负荷在削峰填谷、促进可再生能源消纳中的作用;③掌握基于Matlab的能源系统建模与优化求解方法;④为实际综合能源项目提供低碳经济调度方案参考。; 阅读建议:建议读者结合Matlab代码深入理解模型构建与求解过程,重点关注目标函数设计、约束条件设置及碳交易成本的量化方式,可进一步扩展至多能互补、需求响应等场景进行二次开发与仿真验证。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值