单例模式
public class DanLiDemoClass {
//单例模式 = 一个私有的构造方法,
// 一个静态私有的成员变量,
//还有一个静态的get方法。
private DanLiDemoClass(){ //外界无法 new 出第二个对象
System.out.println("构造方法");
}
private static DanLiDemoClass danLiDemoClass; //保证唯一性
public static DanLiDemoClass getInstance(){
if (danLiDemoClass==null){
danLiDemoClass = new DanLiDemoClass();
}
return danLiDemoClass;
}
}
测试类:
package com.lp.demo01;
import com.lp.domain.DanLiDemoClass;
import com.lp.domain.DuoLiDemoClass;
import org.junit.Test;
public class TestDanLiAndDuoLi {
@Test
public void test01() {
DanLiDemoClass danLiDemoClass1 = DanLiDemoClass.getInstance();
DanLiDemoClass danLiDemoClass2 = DanLiDemoClass.getInstance();
System.out.println(danLiDemoClass1);
System.out.println(danLiDemoClass2);
}
}
单例结果:
私有构造方法
com.lp.domain.DanLiDemoClass@28c97a5
com.lp.domain.DanLiDemoClass@28c97a5
多例模式
DuoLiDemoClass
package com.lp.domain;
public class DuoLiDemoClass {
private DuoLiDemoClass(){
System.out.println("构造方法");
}
public static DuoLiDemoClass getInstance(){
return new DuoLiDemoClass();
}
}
测试类:
package com.lp.demo01;
import com.lp.domain.DanLiDemoClass;
import com.lp.domain.DuoLiDemoClass;
import org.junit.Test;
public class TestDanLiAndDuoLi {
@Test
public void test02() {
DuoLiDemoClass duoLiDemoClass1 = DuoLiDemoClass.getInstance();
DuoLiDemoClass duoLiDemoClass2 = DuoLiDemoClass.getInstance();
System.out.println(duoLiDemoClass1);
System.out.println(duoLiDemoClass2);
}
}
多例结果:
构造方法
构造方法
com.lp.domain.DuoLiDemoClass@28c97a5
com.lp.domain.DuoLiDemoClass@6659c656