2009-11-04 2 views
3

Мне было интересно, если бы я мог получить ваши мысли и советы относительно того, какой будет лучший/самый выгодный шаблон дизайна для сетевой игры Tic Tac Toe?Tic Tac Toe Design Pattern

Я рассматривал следующие шаблоны проектирования: фабрика, абстрактная фабрика, синглтон, прототип и строитель.

В вашем опыте, который был бы лучшим в использовании и почему?

Прямо сейчас, моя игра Tic Tac Toe представляет собой поточную клиент-серверную игру, которую можно воспроизводить через Интернет через сокеты. Тем не менее, я собираюсь реорганизовать игру каким-то образом, чтобы использовать шаблон дизайна.

Я думал о создании архитектуры клиент/сервер, который может быть использован для воспроизведения различных типов игр, таких как Tic Tac Toe, подключить 5 и т.д ...

В каком направлении я должен идти? Я хочу пойти в направлении, которое действительно даст мне некоторый опыт разработки шаблонов ...

Спасибо!

ответ

16

Предостережение: Я ненавижу, когда люди используют «шаблоны дизайна» как ЦЕЛЬ. Создайте хороший код, и если то, что вы делаете, похоже на DP, используйте DP, чтобы помочь вам улучшить код. Но не начинайте говорить: «Я хочу написать свою программу, используя шаблон« Ударный кран ». Это ставит телегу перед лошадью. DP должны появиться из вашего дизайна. Они не должны управлять дизайном.

EndCaveat

Вы уже используете шаблоны проектирования. DP - это просто жаргон для общепринятых «шаблонов», используемых в программировании. Сначала вы должны спросить себя: «Как узнать шаблоны дизайна в сетевой игре, которую я написал?»

После этого вы можете беспокоиться о том, чтобы идти вперед. Чтобы иметь несколько игр, вы, вероятно, захотите использовать абстрактный шаблон фабрики для обработки своих игр. Сервер вызывает фабрику, чтобы получить игровой объект, который знает, как играть в выбранную игру.

+3

+1 для модели «Ударный кран». Сказав это, в большинстве случаев картина «Шаолиньская обезьяна» лучше. – ThisSuitIsBlackNot

2

Различные шаблоны используются по разным причинам. Чаще всего вы увидите более одного шаблона проектирования, используемого в одном приложении, это случай использования правильного шаблона для правильной работы.

Например, в одном веб-приложении я могу использовать шаблон singleton для класса настроек и заводского класса для соединений с базой данных. Singleton гарантирует, что у меня есть только объект настроек, и заводский класс позаботится о передаче мне адаптера базы данных, соответствующего моей среде.

+1

Его также стоит упомянуть о том, что при попытке обучить рожок вашего приложения шаблону дизайна, который не подходит, в целом это не очень хорошая идея. –

+0

Но разве это не так, как кодекс современного предпринимателя? – Pod

2

Образцы, которые вы называете, не являются архитектурными узорами, но шаблон растяжения, вероятно, подходит для многопользовательского сервера, который использует общую инфраструктуру для обслуживания различных игр. Здесь ваш строитель собирает конкретный игровой движок, основанный на (абстрактном) «игровом поле», «правилах игры», «игровом движке» и т. Д.

2

Поскольку вы хотите настроить архитектуру для разных игр, это хорошее место, чтобы попробовать свои силы при реализации фабрики и/или абстрактного шаблона фабрики. Таким образом, когда вы запрашиваете новый экземпляр игры, вы можете разделить свой код, с которого начинается определенная игра, путем запроса нового экземпляра игры с завода.

Я хочу предупредить вас, что шаблоны проектирования не делают ваш код «лучше». Не поймите меня неправильно, шаблоны проектирования чрезвычайно полезны для сложных систем и создания многоразовых расширяемых кодовых баз (не говоря уже о создании лучшей организации и ясности), но их следует применять только тогда, когда это имеет смысл. Пытаясь применить шаблоны проектирования во всем своем коде, скорее всего, приведет к внедрению шаблонов, которые не соответствуют вашей конкретной проблеме или слишком сложны с точки зрения сложности.

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

2

Дизайн-шаблон - это всего лишь название способа создания чего-то. Игра tic-tac-toe могла использовать все дизайнерские паттеры, или она могла обойтись без них. Это всего лишь образец того, как делать что-то конкретное.

Вы хотите реорганизовать свой код, справедливо, но не делайте этого, потому что вы хотите больше шаблонов дизайна в нем. Сделайте это, потому что вы хотите очистить свой код, сделать его более общим и, возможно, расширить его, в другие игры.

Чтобы получить хороший ответ, на котором шаблон дизайна использовать, привести конкретный пример:

Q. Как следует ограничить network_handler к одному экземпляру? - A. Использование Singleton

В противном случае вы можете найти повод включить практически все образцы дизайна.