2011-03-20 60 views
0

我從其他類層次結構建立了一個班,我創造了一大堆,看起來比類名我正在學習設計模式。你能幫我設計這個班的工廠模式嗎?

例如

class Class1 extends BaseClass 
{ 
    public function __construct() 
    { 
    parent::__construct(); 
    } 
} 

class Class2 extends BaseClass 
{ 
    public function __construct() 
    { 
    parent::__construct(); 
    } 
} 

class Class3 extends BaseClass 
{ 
    public function __construct() 
    { 
    parent::__construct(); 
    } 
} 

相同的其他相同類的,但我知道(希望),我可以使用工廠模式創建Class [1-3],只需傳遞一個類名稱並讓工廠返回這些類中的一個。這將需要更少的代碼,因此更易於維護。另外,建議你將如何實施,如果說我想這樣做:

class Class4 extends AnotherBaseClass 
{ 
    public function __construct() 
    { 
    parent::__construct(); 
    } 
} 

注意,class 4擴展另一個基類,但它比的一小段信息是AnotherBaseClass持有完全相同的其他。

現在我想這樣的事情(我的想法是模糊的,不完整的,在這一點上):

//這裏我把重複的代碼

class Skeleton extends BaseClass 
{ 
    public function __construct() 
    { 
    parent::__construct(); 
    } 
} 


class ClassFactory 
{ 
    public function __construct($className , $classType) 
    { 
     <pseudocode> 
     Class5 = new $className 
     ???and some how make $className extend $classType ??? 
     return class5 
     </pseudocode> 
    } 

} 

是工廠模式的正確回答?

乾杯!

+1

「我創建了一堆類似於類名以外的類」 - 永遠不要這樣做。 – smartcaveman 2011-03-20 05:07:43

回答

0

是的 - 工廠模式是正確的答案。此外,您還可以查看Abstract Factory,特別是針對您提到的場景,您的某些類將具有不同的屬性,並且可能來自其他某些基類。