書中介紹了三種工廠,簡單工廠、工廠方法、抽象工廠。
1、簡單工廠:不是一個設計模式,反而比較像是一種編程習慣。
這是我在網上找的圖片,雖然不是類圖,但是簡潔明瞭。如果我們把方法聲明成靜態的,也就變成了靜態工廠,易於使用但是不宜與擴展。
2、工廠方法:定義了一個創建對象的接口,但由子類決定要實例化的類是哪一個。工廠方法讓類把實例化對遲到子類。
public abstract class PizzaStore {
public Pizza orderPizza(String type){
Pizza p=null;
p=createPizza(type);
p.init();
return p;
}
public abstract Pizza createPizza(String type);//工廠方法
}
public class NYPizzaStore extends PizzaStore {
public Pizza createPizza(String type) {//這裏用new創建具體類
Pizza p=null;
if(type.equals("clam")){
p=new ClamPizza();
}
return p;
}
}
public class Test {
public static void main(String[] args) {
PizzaStore ps=new NYPizzaStore();
Pizza p=ps.orderPizza("clam");
}
}
這個工廠方法很適合創建遊戲角色對象(比如子彈 、主角、敵人、擺放物品等等),並且能爲對象做一些初始化的工作。只是建立一個子類就夠了。
3、抽象工廠:提供一個接口,用於創建相關或依賴對象的家族,而不需要明確指定具體類。
抽象工廠真的沒用過啊。