【正文】
功能。這種對時機的判斷和對哪一種具體產(chǎn)品的判斷邏輯混合在一起,使得系統(tǒng)在將來進行功能擴展時較為困難。如果這個全能類代表的是農(nóng)場的一個具體園丁的話,那么這個園丁就需要對所有的產(chǎn)品負責(zé),成了農(nóng)場的關(guān)鍵人物,他什么時候不能正常工作了,整個農(nóng)場都要受到影響。以不變應(yīng)萬變,就是模式的缺點。簡單工廠模式通過這種做法實現(xiàn)了對責(zé)任的分割。這個類含有必要的判斷邏輯,可以決定在什么時候創(chuàng)建哪一個產(chǎn)品類的實例。 Creator 類的源代碼 public class Creator { public static Product factory() { return new ConcreteProduct()。抽象產(chǎn)品角色可以用一個 Java 接口或者 Java 抽象類實現(xiàn)。工廠類在客戶端的直接調(diào)用下創(chuàng)建產(chǎn)品對象,它往往由一個具體Java 類實現(xiàn)。 } else { throw new BadFruitException(Bad fruit request)。 } else if ((strawberry)) { return new Strawberry()。 } public void plant() { (Strawberry has been planted.)。 } } 類 Strawberry 的源代碼 public class Strawberry implements Fruit { public void grow() { (Strawberry is growing...)。 } public boolean getSeedless() { return seedless。 } public void plant() { log(Grape has been planted.)。 public void grow() { log(Grape is growing...)。 } public void setTreeAge(int treeAge) { = treeAge。 } public static void log(String msg) { (msg)。 } public void harvest() { log(Apple has been harvested.)。 ? } 代碼清單 2:類 Apple 的源代碼 public c