讲故事,学(Java)设计模式—单例模式

文章由 @布莱恩了没 翻译、@胡试之 校稿并由ImportNew团队成员整理了全文。如果你也希望参与类似的系列文章翻译,可以加入我们的Java开发技术翻译 小组。

单例模式是Java中最常用的模式之一,它通过阻止外部实例化和修改,来控制所创建的对象的数量。这个概念可以被推广到仅有一个对象能更高效运行的系统,或者限制对象实例化为特定的数目的系统中。例如:

  1. 私有构造函数 - 其他类不能实例化一个新的对象。
  2. 私有化引用 - 不能进行外部修改。
  3. 公有静态方法是唯一可以获得对象的方式。

 单例模式的故事

来看一下使用情况:一个国家只能有一位总统(可能在正常情况下)。所以不管任何时候我们需要一位总统,使用AmericaPresident就能返回一个。getPresident()方法将确保只有一个总统对象被创建。否者,就不妙了。

类图

单例模式Java示例代码

package com.programcreek.designpatterns.singleton;

public class AmericaPresident {
	private AmericaPresident() {	}

	private static final AmericaPresident thePresident=new AmericaPresident();

	public static AmericaPresident getPresident(){
		return thePresident;
	}
}

单例模式在 Java 标准库中的使用

java.lang.Runtime#getRuntime() 是Java 标准库中常用的方法,它返回与当前Java应用关联的运行时对象。

下面是getRunTime() 的一个简单例子,它在windows系统上读取一个网页。

Process p = Runtime.getRuntime().exec(
		"C:/windows/system32/ping.exe programcreek.com");
//get process input stream and put it to buffered reader
BufferedReader input = new BufferedReader(new InputStreamReader(
		p.getInputStream()));

String line;
while ((line = input.readLine()) != null) {
	System.out.println(line);
}

input.close();

输出结果

Pinging programcreek.com [198.71.49.96] with 32 bytes of data:
Reply from 198.71.49.96: bytes=32 time=53ms TTL=47
Reply from 198.71.49.96: bytes=32 time=53ms TTL=47
Reply from 198.71.49.96: bytes=32 time=52ms TTL=47
Reply from 198.71.49.96: bytes=32 time=53ms TTL=47
Ping statistics for 198.71.49.96:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 52ms, Maximum = 53ms, Average = 52ms

 

原文链接: programcreek 翻译: ImportNew.com - ImportNew读者
译文链接: http://www.importnew.com/6662.html
[ 转载请保留原文出处、译者和译文链接。]

关于作者: ImportNew读者

标注为 "ImportNew读者" 发布的文章,均为热心读者的投稿。感谢支持!

查看ImportNew读者的更多文章 >>



相关文章

发表评论

Comment form

(*) 表示必填项

4 条评论

  1. aa 说道:

    这么实现单例模式问题很多啊。。现在都提倡用枚举实现单例模式了好吗。。

    Well-loved. Like or Dislike: Thumb up 5 Thumb down 0

  2. jelly 说道:

    可以讲得稍微细一点吗?

    Thumb up 1 Thumb down 0

  3. jptiancai 说道:

    博主,英文网址更新了枚举式的单例模式http://www.programcreek.com/2011/07/java-design-pattern-singleton/

    Thumb up 0 Thumb down 0

跳到底部
返回顶部