单例模式
设计思路
- 私有化构造方法
- 提供一个共有的静态方法,让外界获取到自己的对象
- 创建一个私有静态变量,用来保存唯一的对象
根据创建时机的不同
- 饿汉模式:类加载时创建对象
- 懒汉模式:第一次调用获取对象的方法时创建对象
饿汉模式
类一加载就创建对象
package mode;
public class Danli {
private static Danli dan = new Danli();
private Danli() {
}
public static Danli getDanli() {
return dan;
}
}
package mode;
public class TestDan {
public static void main(String[] args) {
Danli danli = Danli.getDanli();
System.out.println(danli);
}
}
懒汉模式
第一次调用的时候,创建对象
package mode;
public class Danli {
private static Danli dan;
private Danli() {
}
public static Danli getDanli() {
if(dan == null){
dan = new Danli();
}
return dan;
}
}
package mode;
public class TestDan {
public static void main(String[] args) {
Danli danli = Danli.getDanli();
System.out.println(danli);
}
}
工厂模式
package mode;
public class Factory {
public class One {
}
public class Two {
}
public Object create(int type) {
switch (type) {
case 1:
return new One();
case 2:
return new Two();
}
return new Factory();
}
}
package mode;
public class TestFactory {
public static void main(String[] args) {
Factory factory = new Factory();
Object o1 = factory.create(1);
System.out.println(o1);
Object o = factory.create(2);
System.out.println(o);
}
}