Design Pattern: Factory Pattern (下)
| 2007/12/11 | 留言
上回介紹到腳踏車行終於得到了工廠(Factory)來處理製造方面的部份,那麼究竟還有什麼樣的問題呢?
 目前只有一個工廠,當產品種類愈來愈多時,簡易工廠的方式一樣是難以管理的;或許可以建立多個工廠來分類處理不同的產品,聽來是個不錯的主意。首先就讓工廠成為抽象/虛擬類別(abtract/virtual class),定義出它通用的成員以供繼承。在此,腳踏車行的功能較少,我們可以將工廠的功能與之結合。
 // 當出現更多種類的Factory,且各個Factory都想發展獨特的製造方式
 // 建立一個BicycleStore的抽象類別
 public abstract class BicycleStore
 {
 public Bicycle orderBicycle(String type)
 {
 Bicycle oneBicycle;
 oneBicycle = createBicycle(type);
 oneBicycle.test();
 oneBicycle.pack();
 return oneBicycle;
 }
abstract createBicycle(String type); //Factory method
 }
// 一家BicycleStore的instance (新的Factory)
 public class GiantBicycleStore extends BicycleStore
 {
 Bicycle createBicycle(String item) //Factory method (unique!)
 {
 if (item.equals(“mountain“))
 {
 return new MountainBicycle();
 }
 else if (item.equals(“lady“))
 {
 return new LadyBicycle();
 }
 else 
 {
 return null;
 }
 }
 }
另外在腳踏車部份,我們也有了抽象類別以供繼承:
//Bicycle的抽象類別
 public abstract class Bicycle
 {
 String ID;
 String Handle;
 String Tire;
 void test();
 void pack();
 void getID();
 void setID();
 }
//一種Bicycle的instance
 public class MountainBicycle extends Bicycle
 {
 ID = “MB123“;
 Handle = “BendHandle“;
 Tire = “Goodyeers“;
 void test()
 {
 //unique test way for MB123;
 }
 }
如此的構造,便可稱之為Factory Pattern。
 標籤:Design Patterns, Factory, 設計範式, 軟體技巧
本文作者是Audi Lu
