2013-02-11 2 views
0

необходимо создать абстрактный класс, скажем, часть. Но есть два типа деталей,Дизайн шаблона для создания объекта

Часть1: Эта часть имеет 3 переменные экземпляра, внутри, снаружи, средний

Ч.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

+0

Класс, использующий объект Part, не имеет значения для его переменной экземпляра, но только для его методов печати, поэтому в этом классе я думаю, что мы должны абстрагировать его создание и предоставлять клиенту только часть объекта на котором он может вызвать метод печати, я прав? – Noor

+0

Да, но это верно для любых объектов с общим интерфейсом в том месте, где они используются, и не имеет значения, были ли они созданы с использованием фабрики или строителя или вызова конструктора. Я просил ввести некоторые данные о том, как код, в котором эти объекты будут созданы/управляются, потому что это важно для решения, как абстрагироваться от их создания. – millimoose

ответ

0

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

Я предпочитаю использование заводского образца или прототип:

Prototype пример:

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

Смежные вопросы