1、簡單工廠模式
簡單工廠模式也稱靜態工廠模式,它定義一個工廠類專門負責創建一些類的實例。
優點
* 客戶端不需要在負責對象的創建,從而明確了各個類的職責
缺點* 這個靜態工廠類負責所有對象的創建,如果有新的對象增加,或者某些對象的創建方式不同,就需要不斷的修改工廠類,不利於後期的維護。
案例演示:
* 動物抽象類:public abstract Animal { public abstract void eat(); }
* 具體狗類:public class Dog extends Animal {}
* 具體貓類:public class Cat extends Animal {}
開始,在測試類中每個具體的內容自己創建對象,但是,創建對象的工作如果比較麻煩,就需要有人專門做這個事情,所以就知道了一個專門的類來創建對象。
所以將創建對象的功能專門交給一個類:創建動物工廠 AnimalFactor
public class AnimalFactory {
private AnimalFactory(){}
public static Animal createAnimal(String animalName) {
if(“dog”.equals(animalName)) {
ruturn new Dog();
}
else if(“cat”.equals(animale)) {
ruturn new Cat();
}else {
return null;
}
}
}
2、工廠模式
與簡單工廠模式的區別是工廠模式的高度提升到了抽象工廠的高度,意思就是創建一個抽象工廠,比如創建動物的工廠,這個定義了個抽象工廠,包含一個抽象的創建動物的方法,就這樣可以了,然後需要把這個工廠用來幹嘛(創建什麼動物完成由使用者決定),如果要創建狗,就創建一個狗的工廠(即這個類實現這個抽象工廠類),其他同理。
優點
* 客戶端不需要在負責對象的創建,從而明確了各個類的職責,如果有新的對象增加,只需要增加一個具體的類和具體的工廠類即可,不影響已有的代碼,後期維護容易,增強了系統的擴展性
缺點
* 需要額外的編寫代碼,增加了工作量
案例演示:
使用到的類或接口如下
動物抽象類:public abstract Animal { public abstract void eat(); }
工廠接口:public interface Factory {public abstract Animal createAnimal();}
具體狗類:public class Dog extends Animal {}
具體貓類:public class Cat extends Animal {}
//狗工廠
public class DogFactory implements Factory {
public Animal createAnimal() {…}
}
//貓工廠
public class CatFactory implements Factory {
public Animal createAnimal() {…}
}
有錯誤的地方歡迎指出,感謝閱讀~