2013-02-11 122 views
0

必須創建一個抽象類,比如Part。但有兩個類零件,創建對象的設計模式

第1部分:該部分有3個實例變量,內,外,中

第2部分:該部分有2個實例變量,頂部,底部

最後,兩個部分要擴展一個抽象類部分,所以最後,在Java中的這樣

abstract Class Object{ 
    public abstract String toString(); 
} 

abstract class Part{ 
    abstract void print(); 
} 

Class Part1 extends Part1{ 
    List <Object> inside = new ArrayList <Object>(); 
    List <Object> outside = new ArrayList <Object>(); 
    List <Object> medium = new ArrayList <Object>(); 
    void print(){ 
     //go through all the list and print the object 
    } 
} 

Class Part1 extends Part2{ 
    List <Object> top = new ArrayList <object>(); 
    List <Object> bottom = new ArrayList <object>(); 
    void print(){ 
     //go through all the list and print the object 
    } 
} 

我的問題是設計模式,我可以申請創建部分,我仍然在模式的新手,對我來說它的建造者因爲我必須拿出相同類型的對象具有不同的表示。但是對象並不複雜!

+3

我不知道這個問題是回答的時候它的這個含糊。你必須考慮*爲什麼*你需要抽象'Part'創建。即你應該使用哪種設計模式應用於代碼庫的其餘部分?否則,他們和其他人一樣有效。 (也就是說,都是同樣沒用的)。 – millimoose 2013-02-11 22:25:06

+0

使用對象Part的類不關心它的實例變量,而只關心它的打印方法,所以,在那個類中,我認爲我們應該抽象它的創建並且只給客戶端一個部分對象它可以調用打印方法,我是嗎? – Noor 2013-02-11 22:26:19

+0

是的,但是在使用共享接口的任何對象上都是如此,使用工廠或構建器或構造函數創建它們並不重要。我在詢問關於如何創建/管理這些對象的代碼的一些輸入,因爲這與決定如何抽象其創建有關。 – millimoose 2013-02-11 22:29:27

回答

0

參見http://en.wikibooks.org/wiki/C%2B%2B_Programming/Code/Design_Patterns#Creational_Patterns

我prefere工廠模式的使用或原型:

原型例如:

Class PartsFactory 
{ 
    Part createPart(string partType) 
    { 
     if (partType.equals("Type1")) return new Part1(); 
     if (partType.equals("Type2")) return new Part2(); 
     return null; 
    } 
} 

廠例子:

interface PartsFactory 
{ 
    Part createPart(); 
} 

Class Parts1Factory implements PartsFactory 
{ 
    Part createPart() 
    { 
     return new Part1(); 
    } 
} 

Class Parts2Factory implements PartsFactory 
{ 
    Part createPart() 
    { 
     return new Part2(); 
    } 
} 
+0

對於工廠示例,create方法使用不同的參數,有時是內部,外部,中等或有時是頂部,底部 – Noor 2013-02-11 22:37:21