2013-02-11 90 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