「java单态模式」java如何实现单例模式
本篇文章给大家谈谈java单态模式,以及java如何实现单例模式对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
java中单态模式或单例模式(Singleton)有什么意义?
你好!
存在某些类不需要实例化多次,也就是说
该类一般没有非静态的成员变量,只需要在系统运行时实例化一次就可以了,所以就存在单例模式
如有疑问,请追问。
请教关于java的单态模式
从你的代码来看只有调用getInstance()方法,才会运行System.out.println("here run init()"); 这一句吧。
就算是在properties.load(...)这一句时构造函数又加载了一次,也不会输出"here run init()"这一句啊~
晕了~
=========================================================
我编译了下你这段代码(稍微有点修改)
import java.util.*;
public class Test{
private static Test instance = null;
public static synchronized Test getInstance() {
if(instance==null){
System.out.println("here run init()");
instance = new Test();
}
return instance;
}
private Test() {
init();
}
private void init(){
Properties p = new Properties();
try{
p.load(Test.class.getResourceAsStream("/option.properties"));
//以下是取配置,设置初始化配置的代码,此处略掉
}catch(Exception ioEx){
System.out.println("配置文件option.properties不存在");
}
}
public static void main(String[] args){
Test t1 = Test.getInstance();
Test t2 = Test.getInstance();
System.out.println(t1 == t2);
}
}
结果输出:
here run init()
配置文件option.properties不存在
true
只有一次……没什么问题啊~
===============================================
我把文件创建了,又运行了一次,输出:
here run init()
true
还是只有一次……没什么问题~
==============================================
对了
p.load(new FileInputStream("option.properties"));
这样也可以
===============================================
我装的 Java 6 Update 10
对了,你的电脑是双核的吗?
可能是双核的原因
同步出现了问题
使对象初始化了两次
我家的单核的……
以前在学校学线程那一块的时候
就因为双核的原因,有的例子老是出问题
java里,什么是单态,什么是多态
单态是一种设计模式,作用是保证在Java应用程序中,一个类Class只有一个实例存在。
多态嘛就是父类实例化不同的子类得到不同的结果,例如老虎和羊的父类是动物,老虎和羊都有一个方法就是吃,当分别用老虎和羊来实例化动物类并调用吃的方法时,一个是吃肉,一个是吃草,这种区别就是多态。
java单态模式的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于java如何实现单例模式、java单态模式的信息别忘了在本站进行查找喔。