Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > Общие вопросы C/C++
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.02.2016, 17:35   #1
Forrgit
Новичок
Джуниор
 
Регистрация: 03.02.2016
Сообщений: 1
По умолчанию Как лучше построить архитектуру программы

Опытные люди, подскажите, пожалуйста. Пишу игру танки(что-то вроде танков на денди, но с большим функционалом и в целом круче(движок box2d(для перемещения объектов, взрывов, реалистичности движения и т.д.),полностью разрушаемый мир и т.д.).

Хочу для танка создать отдельно класс. У меня есть 3 варианта решения(представлены на картинке), посоветуйте как лучше сделать? Танки будут различные по характеристикам, назначению и т.д., но всегда будут состоять из корпус+башня(ВАЖНО:: танк будет вращаться отдельно, корпус отдельно, у каждого своя анимация(выстрела, движения, взрыва и т.д.)).


P.s. подумывал над паттерном абстрактная фабрика(сделать абстрактный танк и для него наследников, но они по сути будут отличаться только скоростью\типом снарядов\размером). Уместен ли будет этот паттерн?
Изображения
Тип файла: jpg танк.jpg (27.0 Кб, 121 просмотров)
Forrgit вне форума Ответить с цитированием
Старый 03.02.2016, 18:08   #2
Croessmah
Вредный кошак
Участник клуба
 
Аватар для Croessmah
 
Регистрация: 14.10.2012
Сообщений: 1,159
По умолчанию

1 вариант - сразу в топку.
Танк не является ни башней, ни корпусом.
Танк состоит из корпуса и башни.
Можете унаследовать Tank от Unit.

2 вариант - тоже в топку.
Такие моноклассы не позволят
потом гибко модернизировать класс Tank.

3 вариант вполне, но friend не нужен.
Croessmah вне форума Ответить с цитированием
Старый 03.02.2016, 18:40   #3
Pavia
Лис
Старожил
 
Аватар для Pavia
 
Регистрация: 18.09.2015
Сообщений: 2,409
По умолчанию

Forrgit
Делайте как можно проще.

Тут нет фабрик. Так как класс у вас всего один - Танк!
Вот если бы у вас было-бы несколько API и несколько мостов. Тогда можно было-бы говорить о фабрике.

Вам не нужен строитель который будет собирать этот танк так, как он состоит из двух элементов и всегда известна какими функциями они создаются.

Вариант первый не правильный. Сразу бросается повтор. Танка, танка, танк.
Танк вы предлагаете наследовать от башни и корпуса. Наследование означает многообразие. Т.е. наличие нескольких предков. Так где ещё будут использоваться башни но не у танка и где будут использоваться корпус не у танка? Ответ у вас только один танк и нет ничего более.

По поводу третьего и второго вида разделяй и властвуй. Если хотите создать себе трудностей разделяйте. Вам же работать с отдельными классами. И их отдельно поддерживать. Разделение полезно когда объект сложный. А когда у вас куча простых, то их лучше объединять в структуры.
Когда у вас команда вы можете поручить разработку одного класса одному рабочему. А другому рабочему другой класс.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал .
Pavia вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как строить архитектуру приложения? jean666 Общие вопросы по программированию, компьютерный форум 10 28.09.2015 20:30
Как узнать архитектуру процессора на неттопе? qewertyns Компьютерное железо 8 16.04.2013 23:22
Где лучше хранить настройки программы Paleolit C++ Builder 6 10.06.2012 10:33
Какую архитектуру выбрать? k376 Помощь студентам 2 23.04.2008 23:57
Как лучше построить код для Radiobutton Inbox Общие вопросы Delphi 4 29.01.2007 20:38