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。


標籤:, , ,

分類:

本文作者是Audi Lu

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。

*

*

*

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料