Java工廠模式之簡單工廠模式
阿新 • • 發佈:2018-11-05
首先定義三個類整合基類, 每個子類都重寫了父類的實現方法。
//這個在android原始碼中非常常見,比如圖片資源分為好幾種
//定義頂級父類
public abstract class Person {
abstract void belongMethod();
}
//定義子類
public class Teacher extends Person {
@Override
void belongMethod() {
// 自定義方法
System.out.println("老師會教書");
}
}
public static void main(String[] args) {
//一般情況先new 然後呼叫,程式碼量多
Teacher teacher = new Teacher();
teacher.belongMethod();
Saler saler = new Saler();
saler.belongMethod();
// 下面是簡單工廠模式第一種,比上面程式碼精簡很多
SingleFactory.creat(2).belongMethod();
由上面可以看出,工廠模式更加精簡
public class SingleFactory {
public static Person creat(int type) {
switch (type) {
case 1:
return new Teacher();
case 2:
return new Saler();
default:
return new DefaultPerson();
}
}
}
上述工廠程式碼繼續優化精簡如下
//通過反射來建立物件,更為精簡,比第一種方式更易於拓展
public static <T extends Person> T creat(Class<T> claz){
Person person=null;
try {
person=(Person) Class.forName(claz.getName()).newInstance();
} catch (Exception e) {
e.printStackTrace();
}
return (T) person;
//client呼叫的時候
SingleFactory.creat(Teacher.class).belongMethod();