Обекти за създаване на фабричен модел на Java

Проектирам решение в Java и трябва да създам n обекта въз основа на стойности на свойства. Използвам фабричен дизайн.

Използване на класическия пример за форма и видове форми

String myShapes="circle,square,circle,rectangle"  // This is from a property file
for ( shapeType : myShapes.split("," ) {
   ShapeFactory shapeFactory = new ShapeFactory();
   Shape shape1 = shapeFactory.getShape(shapeType ); 
   shape1.doSomething(); 
}

Може ли някой да ми каже дали следният подход е правилен при създаването на обектите? Не знам колко обекта ще трябва да създам по време на компилиране.


person Thelight    schedule 26.05.2015    source източник
comment
Изглежда добре... Моля, изяснете защо според вас това е проблем?   -  person Alexei Levenkov    schedule 26.05.2015
comment
Можете ли да публикувате кода за ShapeFactory?   -  person Harry.Chen    schedule 26.05.2015
comment
Правилно е, при условие че вашият метод getShape връща конкретен подтип на Shape въз основа на низа, предаден му   -  person AK47    schedule 26.05.2015


Отговори (1)


Дизайнът изглежда добре, но трябва да включва код за справяне с изключителни ситуации. Изброих няколко стъпки. Ще разберете ограниченията на вашия съществуващ дизайн, докато изпълнявате задачата.

  • Когато трябва да създадете прекалено голям брой обекти, вашият дизайн трябва да бъде ефективен от паметта.

  • Проследяване на обектите (проследяване на подобни обекти със същите свойства)

  • Дизайнът трябва да отчита унищожаването на обектите след тяхното използване, тъй като голям брой обекти (създаване в for цикъл!
    ще бъде интензивно запаметяване!).

  • Добре ли е Garbage Collector да вземе обекта и да го унищожи по всяко време по време на изпълнението? Внедряването на блок за финализиране е необходимо, когато се работи с голям брой обекти.

Ето няколко връзки към няколко свързани теми.

добавете обекти с различно име чрез for цикъл

http://www.java-forums.org/new-java/25967-loop-create-objects.html

http://www.java-forums.org/new-java/56024-create-new-objects-loop.html

https://www.java.net/node/675897

person Nirmal    schedule 26.05.2015