JAVA设计模式
笔记 单例模式
- 饿汉式 空间换时间加载模式
SingletonOne.java
package com.imooc.singleton;
/**
* 饿汉式: 创建对象实例直接初始化
*/
public class SingletonOne {
//1,创建类中的私有构造,类外不能实例,只能通过类名调用
private SingletonOne(){
}
//2, 创建该类中的静态私有实例
private static SingletonOne instance = new SingletonOne();
//3,创建共有静态方法,返回静态实例对象
public static SingletonOne getInstance(){
return instance;
}
}
test.java
package com.imooc.test;
import com.imooc.singleton.SingletonOne;
public class test {
public static void main(String[] args){
SingletonOne one = SingletonOne.getInstance();
SingletonOne two = SingletonOne.getInstance();
System.out.println(one == two);
System.out.println(one);
System.out.println(two);
}
}
- 懒汉式
SingletonTwo.java
package com.imooc.singleton;
/**
* 懒汉式: 类内实例对象创建时,并不会直接初始化,只有调用get方法时初始化。
*/
public class SingletonTwo {
//1,创建私有构造方法
private SingletonTwo(){
}
//2,创建静态实例对象
private static SingletonTwo instance = null;
//3,创建开发的静态方法提供实例对象
public static SingletonTwo getInstance(){
if (instance==null)
instance = new SingletonTwo();
return instance;
}
}
test.java
package com.imooc.test;
import com.imooc.singleton.SingletonOne;
import com.imooc.singleton.SingletonTwo;
public class test {
public static void main(String[] args){
SingletonOne one = SingletonOne.getInstance();
SingletonOne two = SingletonOne.getInstance();
System.out.println(one == two);
System.out.println(one);
System.out.println(two);
System.out.println("==========================");
SingletonTwo one2 = SingletonTwo.getInstance();
SingletonTwo two2 = SingletonTwo.getInstance();
System.out.println(one2);
System.out.println(two2);
}
}
注意