(一)C++实现方式:
class OnlyOne
{
int data;
public:
static OnlyOne& Instance()
{
static OnlyOne uniqueInstance;
return uniqueInstance;
}
public:
int GetData(){return data;}
protected:
OnlyOne():data(100){} //构造函数为protected,也可以是private,但子类不能调用该构造函数
OnlyOne(OnlyOne&){}
};
若要求返回值非静态,则借助友元函数:
namespace OnlyOne
{
class RealOnlyOne
{
protected:
int data;
public:
friend RealOnlyOne& Instance();
protected:
RealOnlyOne(): data(100){}
RealOnlyOne(const RealOnlyOne &){}
};
RealOnlyOne& Instance()
{
static RealOnlyOne uniqueInstance;
return uniqueInstance;
}
}
也可以使用c++的模板,实现代码重用:
template<class T>
class Singleton
{
public:
static T& Instance()
{
static T uniqueInstance;
return uniqueInstance;
}
};
class OnlyOne: public Singleton<OnlyOne>
{
friend class Singleton<OnlyOne>;
int data;
public:
int GetData(){return data;}
protected:
OnlyOne():data(100){} //构造函数为protected,也可以是private,但子类不能调用该构造函数
OnlyOne(OnlyOne&){}
};
创建单实例方式示例:
int main()
{
cout<<OnlyOne::Instance().GetData()<<endl;
return 0;
}
(二)java实现方式,考虑了多线程同步
public class OnlyOne{
private static volatile OnlyOne uniqueInstance = null;
private OnlyOne(){
}
public static OnlyOne getInstance(){
if(uniqueInstance == null){
synchronized(OnlyOne.class){
if(uniqueInstance == null){
uniqueInstance = new OnlyOne();
}
}
}
return uniqueInstance;
}
};
分享到:
相关推荐
Singleton主要用于对象的创建,这意味着,如果某个类采用了Singleton模式,则在这个类被创建后,它将有且仅有一个实例可供访问。很多时候我们都会需要Singleton模式,最常见的比如我们希望整个应用程序中只有一个...
设计模式概述与 Singleton 模式详解 在软件设计中,设计模式是解决问题的方案,学习现有的设计模式可以做到经验复用。拥有设计模式词汇,在沟通时就能用更少的词汇来讨论,并且不需要了解底层细节。 设计模式可以...
Singleton模式,顾名思义,Singleton就是确保一个类只有唯一的一个实例。Singleton主要用于对象的创建,这意味着,如果某个类采用了Singleton模式,则在这个类被创建后,它将有且仅有一个实例可供访问。 详细见博客 ...
JavaScript设计模式.pdf JavaScript设计模式是指在软件开发中使用JavaScript语言编写的设计模式。这些设计模式旨在提高代码的重用性、可读性、维护性和扩展性。以下是JavaScript设计模式的知识点总结: 1. 单体...
创建模式 设计模式之Singleton(单态/单件) 阎宏博士讲解:单例(Singleton)模式 保证一个类只有一个实例,并提供一个访问它的全局访问点 设计模式之Factory(工厂方法和抽象工厂) 使用工厂模式就象使用new一样频繁....
是对类的实例化过程的抽象化。一些系统在创建对象时,需要动态地决定怎样创建对象,创建哪些对象,以及如何组合和表示这些对象。创建型模式描述了怎样构造和封装这些动态的决定。 创建型模式分为类的创建型模式...
2. **单例模式(Singleton Pattern)**:单例模式是一种创建型设计模式,确保一个类只有一个实例,并提供一个全局访问点。 3. **观察者模式(Observer Pattern)**:观察者模式是一种行为设计模式,定义了对象间的...
C#设计模式(7)-Singleton Pattern 50 一、 单例(Singleton)模式 50 二、 Singleton模式的结构: 51 三、 程序举例: 51 四、 在什么情形下使用单例模式: 52 五、 Singleton模式在实际系统中的实现 53 六、 C#...
设计模式之Singleton(单态/单件) 阎宏博士讲解:单例(Singleton)模式 保证一个类只有一个实例,并提供一个访问它的全局访问点 设计模式之Factory(工厂方法和抽象工厂) 使用工厂模式就象使用 new一样频繁. 设计模式...
本文档,是利用C++来实现设计模式中的,单例模式,里面有内容说明和相关实例代码介绍
C++设计模式基础教程.pdf 本资源摘要信息涵盖了C++设计模式基础...学习设计模式需要积累案例,大量背类图,多思考、多梳理、归纳总结,尊重事物的认知规律,注意事物临界点的突破。不可急躁,需要不断的追求和实践。
C# 设计模式 - 单件模式(Singleton Pattern) 单件模式(Singleton Pattern)是 Creational Pattern 中的一种,旨在保证一个类仅有一个实例,并提供一个全局的访问点。该模式解决了一个基本的问题,即如何绕过常规...
主要介绍了单例模式 Singleton 简单实例设计模式解析的相关资料,需要的朋友可以参考下
IOS 单例设计模式实例Demo 单例 设计 模式 IOS Singleton
本笔记主要讲述了设计模式的基本概念和应用,包括 Iterator 模式、Adapter 模式、TemplateMethod 模式、FactoryMethod 模式和 Singleton 模式等。通过对这些设计模式的详细解释和示例代码的分析,我们可以更好地理解...
本书设计实例从面向对象的设计中精选出23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。本书分类描述了一组设计良好,表达清楚的软件设计模式,这些模式在实用环境下有特别有用...
这些设计模式提供了一种在创建对象的同时隐藏创建逻辑的方式,而不是使用 new 运算符直接实例化对象。这使得程序在判断针对某个给定实例需要创建哪些对象时更加灵活。 工厂模式(Factory Pattern) 抽象工厂模式...
php /** * 单例模式 * * 保证一个类仅有一个实例,并提供一个访问它的全局访问点 * */ class Singleton { static private $_instance = null; private function __construct() { } static public function ...
C#设计模式(7)-Singleton Pattern 一、 单例(Singleton)模式 二、 Singleton模式的结构: 三、 程序举例: 四、 在什么情形下使用单例模式: 五、 Singleton模式在实际系统中的实现 六、 C#中的Singleton...
本书结合设计实例从面向对象的设计中精选出23个设计模式,总结了面向对象设计中最有价值的经验,并且用简洁可复用的形式表达出来。本书分类描述了一组设计良好、表达清楚的软件设计模式,这些模式在实用环境下特别...