一.工厂方法模式介绍
工厂方法模式是一种结构简单的模式,在平时开发中应用很广泛。
二.工厂方法模式的定义
定义一个用于创建对象的接口,让子类决定实例化哪个类。
三.工厂方法模式的使用场景
在任何需要生成复杂对象的地方,都可以使用工厂方法模式。复杂对象适合使用工厂模式,用new就可以完成创建的对象无需使用工厂模式。
四.示例
public abstract class System {
public abstract void method();
}
public class Android extends System {
public static String ANDROID="Android";
@Override
public void method() {
java.lang.System.out.println("Android");
}
}
public class Ios extends System {
public static String IOS = "ios";
@Override
public void method() {
java.lang.System.out.println("ios");
}
}
public class Factory {
public System create(String type) {
if (type.equals(Android.ANDROID)) {
return new Android();
} else if (type.equals(Ios.IOS)) {
return new Ios();
}
return null;
}
}
Factory factory = new Factory();
System android = factory.create(Android.ANDROID);
System ios = factory.create(Ios.IOS);
android.method();
ios.method();
展示:
2021-04-03 13:11:58.035 12830-12830/? I/System.out: Android
2021-04-03 13:11:58.035 12830-12830/? I/System.out: ios
这是一种方式,我们还可以用反射的方式来实现。
public class Factory {
public <T extends System> T create(Class<T> cls) {
System system = null;
try {
system = (System) Class.forName(cls.getName()).newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return (T) system;
}
}
Factory factory = new Factory();
System android = factory.create(Android.class);
System ios = factory.create(Ios.class);
android.method();
ios.method();
五.总结
工厂模式是常用的设计模式,但也有缺点,因为要引入抽象类,会导致类结构的复杂化。