Java Q&A: 使用Singleton模式?给我一个理由先!

原创 2001年09月23日 15:34:00

Java Q&A: 使用Singleton模式?给我一个理由先!

Q: 在很多地方我都看到使用了Singleton类。我的问题是:较之一个包含static方法(methds)的类,使用Singleton具有什么优点呢?

A: 不使用包含static方法的类而使用Singleton,其区别在于,后者可以带来有效的面向对象设计。Singleton通常展示的是一种更清晰的方法。而一个包含static方法的类只不过是函数或公用子程序(utilities)的简单罗列。

你会问,罗列一组函数有什么问题?

很简单。罗列函数,你就不是在进行面向对象编程;你的工作实际上倒退到了传统的面向过程的程序设计中。悄然之间,对象不再是程序的焦点,而你自己也陷入到以数据为中心的程序设计模式中。换句话说,你不再是向包装了状态和行为的对象发送消息,而是针对数据进行函数调用。公用子程序必然造成行为和数据完全分离,而这一点在面向对象设计中是绝不允许的。

也不是说完全不能使用公用子程序。面向对象的公用子程序确实存在。有时也需要将对象当作数据来处理。例如,我曾写了一套公共子程序,用来将Java对象转换成相应的CORBA形式。很难将那些方法写成一个类,因为它们确实没有状态信息;我也不想将转换代码嵌入到Java类中。然而,这确实容易带来混乱。

对于系统中的某个类,如果想让它无论什么时候只有一个实例存在,这种情况下可以使用Singleton。例如有这样一个类,它提供对CORBA server的访问,还要做到负载平衡。这时候就不要使用多个这样的对象,因为每个对象都会和相同的server打交道。占用冗余资源当然浪费。所以,对server的访问最好集中到一个实例之中。

 

Java 写一个单例模式(Singleton)出来

第一种:饱汉模式 public class SingleTon {  private SingleTon(){ } //实例化放在静态代码块里可提高程序的执行效率,但也可能更占用空间 ...
  • zpf336
  • zpf336
  • 2014年09月25日 21:41
  • 7826

每天一题(48) - C++实现Singleton模式

饿汉模式 代码(1) //.h文件 class Singleton { public: static Singleton& GetInstance(); private: Singleton(){...
  • insistGoGo
  • insistGoGo
  • 2013年07月22日 19:37
  • 3384

给我一个不坚强的理由

人人都说女孩子不要太要强、太独立、太厉害,不然会不招人喜欢。    可是,我若不要强、不独立、不变厉害,谁会在我最无助的时候伸出援手?    靠山山会倒,靠人人会跑。    女孩子,只有自己强大了,才...
  • caoyahong114
  • caoyahong114
  • 2016年03月23日 21:41
  • 211

单例模式(Singleton )的几种用法以及使用条件

单例模式(Singleton Pattern)是 Java 中最简单的设计模式之一。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。 这种模式涉及到一个单一的类,该类负责创建自己的...
  • yin767833376
  • yin767833376
  • 2017年01月12日 16:40
  • 864

如何创建线程安全的单例模式?线程安全的Singleton!

单例模式的概念 单例模式就是确保只有一个实例,而且自行实例化并向整个系统传递这个实例,这个类就称作为单例类 单例模式最重要的一个特点就是构造方法私有化。创建单例模式分为懒汉式和饿汉式。 ...
  • a347911
  • a347911
  • 2016年11月24日 16:59
  • 1346

C++中实现singleton(单例模式)的最简单写法

前几天看了 Java中实现singleton的写法,就想在C++中实现一下,找了很多资料,看了各个牛人写的不同版本,但最后在stack overflow上找到了一个最简单的写法,现在贴出来以供参考: ...
  • flybird19870326
  • flybird19870326
  • 2014年03月04日 16:50
  • 1897

每天给我一个幸福的理由

每天给我一个幸福的理由   他向我求婚的时候,尚处于一穷二白的阶段。他能给我的,事实上都属于纸上画饼。不过,男人向女人求婚的时候,都是极其豪迈的,他雄纠纠气昂昂地问我:“说吧,你想要什么?” ...
  • u023628799
  • u023628799
  • 2014年11月21日 21:53
  • 3

C++中线程安全并且高效的singleton

Singleton是一个非常常用的设计模式。几乎所有稍大的程序都会用到它。所以构建一个线程安全,并且高效的singleton很重要。既然要讨论这个主题,我们就先来定义一下我们的需求: Lazy ...
  • janeqi1987
  • janeqi1987
  • 2017年07月26日 15:20
  • 142

java当中的单例模式

java当中单例模式用得非常的多,特别是我在安卓开发当中
  • realrealrealrealreal
  • realrealrealrealreal
  • 2014年11月05日 00:18
  • 646

C#设计模式——单例模式(Singleton)

一、引言 最近在设计模式的一些内容,主要的参考书籍是《Head First 设计模式》,同时在学习过程中也查看了很多博客园中关于设计模式的一些文章的,在这里记录下我的一些学习笔记,一是为了帮助我更深...
  • ycl295644
  • ycl295644
  • 2015年07月06日 08:53
  • 2020
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Java Q&A: 使用Singleton模式?给我一个理由先!
举报原因:
原因补充:

(最多只允许输入30个字)