浅谈单例模式
2006-08-14 18:50
309 查看
这几天在项目里用到了单例模式,但自己却一直觉得好像明白了,很简单,但有时又觉得迷糊,不明白。于是到网上专门搜了一下,嗨,原来如此,还是前天搞明白了静态方法的用法,才让我真正搞明白这个模式。
其实这个模式的确是设计模式中最简单的一个。
下面是我看到的这篇文章:
单件模式(singleton)是一个非常简单的模式,这是我第一个理解并且能运用的模式(注:原来单件也是这篇文章的作者第一个接触的模式)。有时候模式的复杂程度并不在于本身,而是由于他的应用目的。最初的时候面对一个模式经常充满了困惑,一个简单的调用为什么要搞的如此复杂?为什么要建立这么多类,只是为了打开一个文件。
通常说来学习一个模式是一个接受、认可、领会的过程。接受:了解模式的结构,了解实例的意义;认可:认可该模式在实际工程中的作用和可行性;领会:将模式应用到开发过程中。
而模式的应用目的说到底无非是为了降低模块之间在时间和空间上的耦合程度,以此提高模块的复用性,降低出错的概率。
单件模式
singleton模式是一个较为简单的模式,下面的代码就可以建立一个singlton模式的例子,这是一个写系统日志的类。
public class logwriter
{
//申明一个静态的变量,类型为类本身
private static logwriter _instance = null;
//将类的构造函数私有化,使得这个类不可以被外界创建
private logwriter()
{
}
//提供静态的方法,创建类的实例
public static logwriter getinstance()
{
if (_instance == null)
{
_instance = new logwriter();
}
return _instance;
}
//下面实现类的其他功能
//....
}
调用者不可以通过new的形式得到singleton的实例,调用的例子如下:
logwriter log = logwriter.getinstance();
log.debug("hello world");
实际应用
很容易想象,单件模式适用于下面的情况:整个系统中某个对象是唯一的,或者是有固定数量的。比如数据库连接,配置文件,等等……
模式是一种程序员间的约定术语,语言可以成为思维的基础。有了这样的语言,一些复杂的概念就变得容易交流了。比如设计人员只要说到,某个类是一个单件模式,是一个singleton,程序员听见以后就至少应该明白这个类的调用方式了,而不用再详细的说明。
(注:完)
呵呵。将这篇文章包装一下,占为己有,便算是俺滴第二篇原创了:)不过收获才是最重要的。如果你也跟我一样,连静态方法的使用都还不清楚,那还是先看看C#的基础知识吧。顺便说一下,俺的水平的确比较菜,所以大虾们勿为见笑。嘿。
其实这个模式的确是设计模式中最简单的一个。
下面是我看到的这篇文章:
单件模式(singleton)是一个非常简单的模式,这是我第一个理解并且能运用的模式(注:原来单件也是这篇文章的作者第一个接触的模式)。有时候模式的复杂程度并不在于本身,而是由于他的应用目的。最初的时候面对一个模式经常充满了困惑,一个简单的调用为什么要搞的如此复杂?为什么要建立这么多类,只是为了打开一个文件。
通常说来学习一个模式是一个接受、认可、领会的过程。接受:了解模式的结构,了解实例的意义;认可:认可该模式在实际工程中的作用和可行性;领会:将模式应用到开发过程中。
而模式的应用目的说到底无非是为了降低模块之间在时间和空间上的耦合程度,以此提高模块的复用性,降低出错的概率。
单件模式
singleton模式是一个较为简单的模式,下面的代码就可以建立一个singlton模式的例子,这是一个写系统日志的类。
public class logwriter
{
//申明一个静态的变量,类型为类本身
private static logwriter _instance = null;
//将类的构造函数私有化,使得这个类不可以被外界创建
private logwriter()
{
}
//提供静态的方法,创建类的实例
public static logwriter getinstance()
{
if (_instance == null)
{
_instance = new logwriter();
}
return _instance;
}
//下面实现类的其他功能
//....
}
调用者不可以通过new的形式得到singleton的实例,调用的例子如下:
logwriter log = logwriter.getinstance();
log.debug("hello world");
实际应用
很容易想象,单件模式适用于下面的情况:整个系统中某个对象是唯一的,或者是有固定数量的。比如数据库连接,配置文件,等等……
模式是一种程序员间的约定术语,语言可以成为思维的基础。有了这样的语言,一些复杂的概念就变得容易交流了。比如设计人员只要说到,某个类是一个单件模式,是一个singleton,程序员听见以后就至少应该明白这个类的调用方式了,而不用再详细的说明。
(注:完)
呵呵。将这篇文章包装一下,占为己有,便算是俺滴第二篇原创了:)不过收获才是最重要的。如果你也跟我一样,连静态方法的使用都还不清楚,那还是先看看C#的基础知识吧。顺便说一下,俺的水平的确比较菜,所以大虾们勿为见笑。嘿。
相关文章推荐
- 浅谈DAO模式(转)
- 浅谈Route组件的设计思考与模式
- 浅谈几种创建型模式的优缺点及其相关性
- 结合Unity浅谈设计模式-单例
- 浅谈php之设计模式基础
- Oracle 浅谈optimizer_mode优化器模式
- 浅谈JSP网站开发技术中的两种模式
- 浅谈设计模式——对象的结构模式
- 装饰器模式浅谈
- Java“老兵”浅谈源码的七大设计模式
- 浅谈设计模式
- 浅谈架构之路:前后端分离模式
- 浅谈Java设计模式(一)工厂模式
- 浅谈Java虚拟机的工作模式Client和Server。
- 浅谈单例模式……
- 设计模式--浅谈抽象工厂模式
- 浅谈互联网运营模式
- Android学习之浅谈对MVC模式和MVP模式的理解
- 浅谈Java设计模式(八)代理模式(Proxy)
- 聊聊.net程序设计——浅谈MVC 架构模式(上)