package com.donnie;
/*class OpenFile{
public OpenFile(){
System.out.println("构造函数");
}
public void createFile(){
System.out.println("创建文件");
}
}
public class Singleton {
public static void main(String arg[]){
OpenFile f1=new OpenFile();
f1.createFile();
//1000代码以后
//OpenFile f2=f1; 假如运行很多代码还要记住f1对象,这是一件很麻烦的事,f1一直占着内存。
OpenFile f2=new OpenFile();
f2.createFile();
}
}
构造函数
创建文件
构造函数
创建文件
结果出现二个构造函数,其实我们虽要一次就好,建太多会出现内存损耗太大
*/
class OpenFile {
/*public static OpenFile fo=new OpenFile();
public static OpenFile getInstance(){
return fo;
}*/
public static OpenFile fo=null;
public static synchronized OpenFile getInstance(){//如果不加同步,在多线程时会造成线程不安全
if (fo==null){
fo=new OpenFile();
}
return fo;
}
private OpenFile(){ //定义为private是怕不小心调用构造函数,要保护起来
System.out.println("构造函数");
}
public void createFile(){
System.out.println("创建文件");
}
}
public class Singleton {
public static void main(String[] args){
OpenFile f=OpenFile.getInstance();
f.createFile();
//10000
OpenFile f2=OpenFile.getInstance();
f2.createFile();
}
/*构造函数
创建文件
创建文件
*最后只有一次出现构造函数,
单例模式是一种设计思想
Singleton模式主要作用是保证在Java应用程序
中,一个类Class只有一个实例存在。在很多
作中,比如建立目录数据库连接都需要这样
单线程操作。
适合做公共工作
Singleton模式就为我们提供了这样实现的可能
使用Singleton的好处还在于可以节省内存,因
为它限制了实例的个数,有利于Java垃圾回收
(garbage collection)。
注意,有时候看文档的时候,发现有些构造函数是被保护的,或者没有构造函数,
这样十有八九是构造函数
*/
}