Я относительно новичок в Java и пытаюсь решить проблему. У меня есть базовый класс, для этого примера можно назвать его полем, и у меня есть еще 3 класса ячеек, наследующих базовый ящик класс. Причина этого в том, что каждый из этих трех ящиков имеет разные характеристики, которые отличает их друг от друга. Давайте сделаем вид, что: Box01 может ТОЛЬКО быть изготовлен из картона и иметь длину от 15 до 30 см. Box02 может ТОЛЬКО изготавливаться из алюминия и иметь длину более 30 см. box03 может ТОЛЬКО быть изготовлен из пластика и иметь длину менее 100 см.Выбор Java-объектов во время выполнения
В рассматриваемой программе пользователь не может выбрать тип коробки специально, но в качестве альтернативы должен предоставить свои требования, и программа должна ответить, если это возможно. Таким образом, пластиковая коробка размером 120 см невозможна, также нет картонной коробки размером 50xm.
Мое текущее решение заключается в использовании, если такие утверждения, как:
if(boxType == 'cardboard' && length >= 15 && length <= 30){
Box = new box01(boxType, length);
else if(boxType == 'aluminium' && length >= 30){
Box = new box02(boxType, length);
}
Я знаю, что в этом упрощенном примере представляется ненужным иметь дополнительные классы коробки, но предположим, что в реальной версии, что коробки имеют гораздо больше уникальные характеристики, которые будут отражать в атрибутах классов и конструктора.
Теперь на мой вопрос. Этот конкретный метод выглядит нормально здесь только с двумя тестами и несколькими ifs, но моя программа имеет значительно больше атрибутов и множество других тестов. Есть ли еще более сложный способ для моей программы определить, какой ящик должен сделать моей программой, кроме ifs.
Благодарим вас за всех, кто не торопится прочитать это, понять и опубликовать ответ. Я уверен, что решение намного проще, чем я это делаю.
Подробнее о ** Factory Design Pattern **. Вот ссылка http://www.tutorialspoint.com/design_pattern/factory_pattern.htm – Prateek
Возможно, я ошибаюсь из-за вашего простого и простого примера, но я не уверен, что вам нужны отдельные классы. Возможно, это просто фабрика и набор правил, причем каждый тип ящиков является другим экземпляром класса правил. Я делаю это в ответ, чтобы я мог быть более ясным. –
Причиной наличия отдельных классов для ящиков является, например: Box01 может или не может быть подан в подарок. это специфично для этого окна, и поэтому bool будет передан конструктору box01 true/false. Box02 и Box03 не должны быть полностью украшены подарками, поэтому им не имеет смысла иметь доступ к этой функциональности. Я читаю на заводах в настоящее время. Я могу видеть их полезность, но у них все еще есть инструкции OF для определения правил? Просто, что он будет скрыт внутри фабрики, а не снаружи внутри основного класса и т. Д. – user2981060