- 0
архитектура без наследования. возможна ли?
- 
Similar Content- 
			
			By cyklop77
 Помогите пожалуйста разобраться в вопросе организации кода в простейшей игре. и в результате скажите:
 1. правильный первый вариант
 2. правильный второй вариант
 3. оба варианта правильные и используются в зависимости от ситуации
 4. давно уже существует паттерн %patternname% и с успехом используется в такой ситуации
 Допустим есть 2D-ландшафт, над ним летит корабль игрока. Корабль может стрелять ракетами.
 Описываю первый вариант организации ООП-кода на js(в js контроллер и представление совмещены):
 инициализация игры начинается с создания spaceView, который в свою очередь инициализирует:
 ландшафт,
 корабль игрока
 PlayerShipView - корабль игрока. Он может стрельнуть ракетой(PlayerRocketView). То есть объект корабля связан с объектом ракеты
 Ракета может столкнуться с ландшафтом. То есть объект ракеты связан с объектом spaceView
 В результате:
 Имеем 3 связанных объекта, но каждый из них содержит только свою функциональность(это плюс).
 Но если в программе придётся что-нибудь менять(например отключить кораблю игрока возможность стрелять ракетами), то вносить правки придётся в разных местах программы(это минус).
 Есть несколько глобальных переменных(это минус)
 Описываю второй вариант организации ООП-кода на js(в js контроллер и представление совмещены):
 инициализация игры начинается с создания spaceView, который в свою очередь инициализирует:
 ландшафт,
 корабль игрока,
 ракеты(есть нажата кнопка "огонь")
 и вообще все остальные объекты
 Таким образом:
 Если например игрок нажимает "огонь", то инициализация ракеты происходит в spaceView, а PlayerShipView вообще ничего не знает об объекте ракеты(это плюс).
 Соответственно нет глобальных переменных(это плюс).
 Но в spaceView содержится куча логики(всей игры, в котрой кроме корабля игрока и ракеты существует очень много других объектов).
 
 Для наглядности я реализовал первый вариант здесь: https://github.com/zlodiak/space-1
 В нём используются различные библиотечки типа backbone, underscore, но незнание их не мешает пониманию общей структуры программы
 Не бейте(ногами), я знаю что вопрос для телепатов
 
- 
			
			By cyklop77
 ребята, помогите пожалуйста советом
 я сделал на backbone форму с валидацией: https://jsfiddle.net/9t1cwfrv/5/ .пока для простоты использовал только одно поле:
 github: https://github.com/zlodiak/shippingCalculator1
 проблема в том, что в финальной версии калькулятора полей будет много. поэтому мне хотелось бы чтобы каждое представление наследовало от какого-нибудь общего родительского 'класса' методы:
 notValidMarkAdd(),
 validMarkAdd()
 иначе их придётся дублировать в каждом представлении
 как бы это реализовать?
 
 
- 
			
			By cyklop77
 помогите пожалуйста разобраться в в вопросе. привожу код на питоне, но сам язык здесь не важен потому что вопрос принципиальный. вот простыня кода, но чтобы ответить на вопрос смотреть его не обязательно:
 
 здесь происходит приблизительно следующее. я создаю класс с общим для всех потомков свойством. затем классы для потомков, затем для каждого класса потомка фабрику, затем класс синглтон, который создаёт потомков(о которых я сказал чуть выше)
 
 я поместил указатели на всех созданных потомков в переменную класса синглтона и в конце скрипты вывел всех потомков так:
 
 for boat in World.boats: print(boat) for raft in World.rafts: print(raft) в результате получил в консоль следующий вывод:
 (python3_env)kalinin@kalinin ~/python3/python3_files/boats4 $ python index.pyWorld: {'creared_at': 'Saturday, 05. December 2015 09:40AM'}worlds quantity: 1Boat: {'oars': 2, 'peoples': 7, 'speed': 60, 'color': 'blue', 'name': 'beda_0'}Boat: {'oars': 0, 'peoples': 10, 'speed': 100, 'color': 'yellow', 'name': 'beda_1'}Boat: {'oars': 0, 'peoples': 7, 'speed': 60, 'color': 'magenta', 'name': 'beda_2'}Boat: {'oars': 1, 'peoples': 9, 'speed': 60, 'color': 'red', 'name': 'beda_3'}Raft: {'sails': 1, 'peoples': 1, 'speed': 10, 'color': 'magenta', 'name': 'ra_0'}Raft: {'sails': 1, 'peoples': 2, 'speed': 30, 'color': 'blue', 'name': 'ra_1'}Raft: {'sails': 1, 'peoples': 2, 'speed': 10, 'color': 'magenta', 'name': 'ra_2'}Raft: {'sails': 0, 'peoples': 2, 'speed': 10, 'color': 'magenta', 'name': 'ra_3'}но совесть мне нашёптывает в одно ухо, что хорошо бы сделать по человечьи и, используя self, всех потомков поместить в переменную объекта, а не класса. однако дьявол в другое ухо нашёптывает, что если уж у меня синглтон по определению может существовать только в единственном экземпляре, то вполне допустимо оставить всё как есть(то есть использовать пременную класса)
 
 опытные программисты, что посоветуете использовать для хранения указателей? переменную класса или переменную объекта?
 
 
- 
			
			
 
         
	 
	
Question
cyklop77
Link to comment
Share on other sites
1 answer to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.