程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> Design Pattern Singleton 單一模式

Design Pattern Singleton 單一模式

編輯:C++入門知識

單一模式的幾個注意點:

一) 設計單一模式,首先需要把構造函數給私有化了,不讓外界訪問,那麼外界只能通過提供的函數獲取一個新的類。

二) C++的單一模式,記得要在類外初始化一個類,否則或內存出錯的。

三) 這個唯一的類必須是要靜態的


程序:

#ifndef _SINGLETON_H
#define _SINGLETON_H

#include 
#include 

using namespace std;

class DuGuJiuJian
{
	string FounderName;

	DuGuJiuJian(string name) : FounderName(name)
	{
	}

	~DuGuJiuJian()
	{
		if (Founder) delete Founder;
	}
	
public:	
	void poJian()
	{
		cout<<"破劍式……\n";
	}

	void poDao()
	{
		cout<<"破刀式……\n";
	}

	inline static DuGuJiuJian *getInstance(string name = "No Name")
	{
		if (!Founder)
		{
			Founder = new DuGuJiuJian(name);
		}
		return Founder;
	}

	string getFounder()
	{
		return FounderName;
	}

private:
	static DuGuJiuJian *Founder;
};

DuGuJiuJian *DuGuJiuJian::Founder = nullptr;



void SingletonDuGuJiuJian_Run()
{
	DuGuJiuJian *jian = DuGuJiuJian::getInstance("獨孤求敗");

	cout<<"Founder is:"<getFounder()<getFounder()<poDao();
	cout<<"令狐沖";
	jian_2->poJian();

	cout<<"Founder is:"<getFounder()<

運行:



因為是單一模式,所以只能有一個創始人獨孤求敗,呵呵,沖哥可以使用,不能是創始人。


當然,本類不是十分完善,比如:還有多線程的時候可能會出問題,內存釋放需要處理好,可以使用臨時靜態類。

不過這個模式的概念就是這樣了。


  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved