简单的说下吧!!
单例模式定义 :在Java应用程序中,随着应用程序的运行创建出很多对象,但有时候我们不希望在创建某类对象时,无论创建多少此该类对象只有一份在内存中,这就是单类。要实现单类模式首先要保证构造函数私有化。
单例模式特点 :1,单类只有一个实例
2,单例必须自己创建自己唯一的实例
3,单例类必须给所有其他对象提供这一实例
单例在Java语言中有两个构建方式:
1,懒汉式:指全局的单例实例在第一次使用时构造。延迟初始化
2,饿汉式:指全局单例在类装载时构造。急切初始化
例子:
/**
* 单例模式(饿汉式单例类) 从速度和反应时间角度来讲,饿汉式单例类稍好
*/
public class Singleton {
private static Singleton singleton = new Singleton();
private String value;
//构造方法要私有
private Singleton(){ }
//提供一个对外的方法
public static Singleton getSingleton(){
return singleton;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
}
//单列模式(懒汉式)
class Singleton2{
private static Singleton2 singleton = null;
private String value;
//构造方法要私有
private Singleton2(){}
# //提供一个对外的方法
public synchronized static Singleton2 getInstance(){ //为了线成安全加了synchronized
if(singleton == null){
singleton = new Singleton2();
}
return singleton;
}
}
两者区别:懒汉式浪费判断时间,节约内存空间,如果不加synchronized 线程是不安全的,饿汉式与懒汉式恰恰相反。
举例:地球上只有一个太阳系。
解决问题:运行时繁琐创建多个对象访问,使线程不安全
单例子模式优点:只有一个实例不需要重复new一个对象,不浪费资源
缺点:对象类派生子类有很大的困难,只有在父类没有实列化时才可以实现。
项目中如何使用:数据库连接池对象
jdk中使用:java.lang.Runtime
由于时间关系就写到此吧!!!!!!!!