Выполняем задание на Abstract Factory Pattern часть 1

В первой части мы создадим абстрактную фабрику танков, по одному экземпляру каждого танка и проведем бой между случайными танками СССР и Германии.

Выполняем задание на Abstract Factory Pattern часть 1 Java, Программирование, Паттерны, Задача, Длиннопост

Структура программы:

Выполняем задание на Abstract Factory Pattern часть 1 Java, Программирование, Паттерны, Задача, Длиннопост

Весь код программы находится по адресу: https://github.com/Norfin85/TankBattle


Опишу лишь пару, на мой, взгляд интересных моментов.

Момент 1:

Классы LightUssrTank, MediumUssrTank, HeavyUserTank имеют различный показатель armor. Все переменные в классах имеют модификатор private, а значит объявление переменной должно происходить в классе . Но UssrFactory возвращает  объекты класса Tank, а значит поле armor будет недоступно в этих объектах. Эту проблему можно решить следующим образом:

В абстрактом классе Tank объявляется абстрактная функция getArmor:

Выполняем задание на Abstract Factory Pattern часть 1 Java, Программирование, Паттерны, Задача, Длиннопост

А в конкретных класса объявляется переменная armor и реализация функции getArmor:

Выполняем задание на Abstract Factory Pattern часть 1 Java, Программирование, Паттерны, Задача, Длиннопост

Момент 2: в абстрактом классе задается конструктор, а в классе-наследнике UssrMediumTank он используется используя ключевое слово super(), при  этом класс UssrMediumTank имеет свой конструктор с большим количеством полей. Это позволяет нам объединять общие параметры для всех классов-наследников в один общий абстрактный класс.

И сама главная программа:

Выполняем задание на Abstract Factory Pattern часть 1 Java, Программирование, Паттерны, Задача, Длиннопост

Программа пока очень громоздкая и не учитывает скорость стрельбы при встрече лоб в лоб. Это все будет исправлено во второй части путем создания таймера боя и очков действия танков. Также внутрь объектов будет помещена их ориентация.

И еще некоторые модификации...)

Выполняем задание на Abstract Factory Pattern часть 1 Java, Программирование, Паттерны, Задача, Длиннопост

Задачки для изучающих Java

43 поста1.8K подписчик

Добавить пост

Правила сообщества

Прошу воздержаться от взаимных оскорблений.

Больше позитива, ведь программирование - это весело)

2
Автор поста оценил этот комментарий

С форматированием кода совсем беда.

From the main menu, select Code | Reformat Code or press Ctrl+Alt+L.

Alternatively, in the project tool window, right-click the directory and from the context menu, select Reformat Code.

раскрыть ветку
Автор поста оценил этот комментарий

Почему задание  ?

раскрыть ветку
Автор поста оценил этот комментарий
Пиздец. Если в методе больше 15-ти строк - этот метод становится тяжёлым. Если в методе больше 30 -ти строк - метод превращается в говно. А у тебя там ещё и 100500 ифов. Омайнгот
DELETED
Автор поста оценил этот комментарий

1. Имплементация фабрики неверная.

2. Убери наследование.

3. Добавь проперти тип танка и/или страна.


В этом случае, у тебя фабрика будет полностью ответствена за создания танка. В случае каких-либо модификаций, тебе нужно лишь в одном месте это сделать. Наследование будет тебя ограничивать. Плюс проще тестировать.