创建型模式分为:
1.单例模式
2.工厂方法模式
3.抽象工厂模式
4.建造者模式
5.原型模式
一,单例模式:
1.定义:
确保一个类只有一个实例,并向整个系统提供这个实例
2.
饿汉式单例模式
public class SingletonHungry {
//1.实例化该类并且私有化
private static SingletonHungry
sHungry = new SingletonHungry();
//2.构造方法私有化,保证外界无法直接实例化
public SingletonHungry() {
}
//3.定义1个以方法获得实例对象
public static SingletonHungry getInstance(){
return sHungry;
}
}
懒汉式单例模式
public class SingletonLazy {
private static SingletonLazy sLazy= null;
//私有化构造函数,保证外界不能直接实例化
public SingletonLazy() {
}
// 方法同步
synchronized public static SingletonLazy getInstance(){
if (sLazy==null) {
sLazy = new SingletonLazy();
}
return sLazy;
}
}
改进后的单例模式
/**
*
* 调用静态方法来得到实例化对象
* SingletonLazy
* 创建人:jcy
* 时间:2018年5月31日-下午1:28:49
* @version 1.0.0
*
*/
public class SingletonLazy {
public static class slazy{
private static SingletonLazy singletonLazy = new SingletonLazy();
}
public static SingletonLazy getInstance(){
return slazy.singletonLazy;
}
}
懒汉单例模式与饿汉单例模式的区别:
1.饿汉单例模式在类加载时实例化,而懒汉单例模式在第一次被引用时被实例化
2.在效率上饿汉单例模式更快,在性能上懒汉更好
3.在Java中懒汉单例模式更符合设计要求
单例模式使用场景:
1.要求生成唯一序列号的环境
2.需要共享数据的时候(比如做一个点击量的时候)
3.Spring框架中的Bean
4.java.lang.Runtime类也采用了单例模式,其中getRuntime()方法就返回的是唯一的实例