дизайн шаблоны назначений - PullRequest
0 голосов
/ 18 февраля 2011

Есть ли место, где можно найти несколько заданий для реализации шаблонов проектирования (вместе с решениями?)

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

Я на самом деле ищу готовое приложение, которое использует большинство шаблонов проектирования. (Все шаблоны проектирования в одном задании)

Ответы [ 3 ]

6 голосов
/ 18 февраля 2011

Построй меня Антфарм !!

Вы хотите назначение? Я дам тебе один. Это должно произойти во вторник, 22 февраля в 21:00 по тихоокеанскому времени. Ты собираешься построить мне antfarm, и ты будешь использовать некоторые общие шаблоны проектирования, чтобы сделать это.

У этого нет КАЖДОГО шаблона проектирования, потому что это просто глупо. Однако этого достаточно, чтобы взаимодействия были сложными, но при этом были достаточно простыми для быстрой реализации. Как только это будет сделано, мы можем рассмотреть возможность добавления дополнительных функций к нашей ферме муравьев!

Я буду добавлять требования (с какой редакцией они были добавлены) по мере возникновения.

Вот требования:

Функциональные требования :

  • На лугу может быть много муравейников. Для этого задания разрешается только один луг.
  • Луг должен быть способен порождать логически неограниченное количество муравьев.
  • Антфарм должен состоять из сети комнат фармфармов.
  • В муравьедом хозяйстве должны быть комнаты для появления новых муравьев.
  • Муравьи должны быть в состоянии сражаться с другими муравьями. Когда они это сделают, проигравший битвы должен умереть (его больше не может командовать муравейник), а победитель битвы должен получить атрибуты муравья.
  • Муравей должен иметь только один вид муравья. Каждый вид должен иметь какой-то бонус к ним. Возможно, они собирают еду быстрее. Возможно, у них больше шансов убить других муравьев.
  • Если член колонии муравьев убивает королеву другой колонии, королева убийцы должна взять под контроль популяцию муравьев мертвой королевы. все муравьи теперь должны иметь атрибуты обоих видов муравьев. (Таким образом, если один вид был сильным, а другой - эффективным, то теперь обе популяции объединены в одну сильную и эффективную популяцию.)
  • Муравьям приходится отдыхать так часто. Когда они это сделают, они должны потреблять еду. Муравей должен быть ограничен в количестве, в котором может отдыхать муравей, в зависимости от количества комнат (количество X на комнату отдыха).
  • Симуляция должна заканчиваться, когда в конце галочки находится 1 или менее активных колоний / королев. Это означает, что вы должны создать как минимум 2 колонии до первого тика.
  • Помещения в Antfarm должны требовать определенного (возможно, большого) количества рабочих клещей для строительства. Таким образом, если на копку комнаты потребуется 1 рабочий на 100 тиков, то на строительство комнаты потребуется 50 рабочих на 2 тика и т. Д. Но строительство комнаты должно стоить немалых затрат, поскольку комнаты определяют, сколько вы можете отдохнуть. (Это требование добавлено в редакцию спецификации 1.)

Технические требования : (Схемы проектирования выделены жирным шрифтом)

  • Класс лугов ДОЛЖЕН быть синглтоном .
  • Антфарм должен быть построен путем помещения комнат в муравейник. (шаблон Builder)
  • Дроны и Воины должны создаваться только с фабричным шаблоном от AntRooms, а королевы с фабричным шаблоном от Meadows для целей новой колонии.
  • Используйте шаблон декоратора , чтобы отслеживать атрибуты муравья.
  • Antfarms должен быть шаблонным (с использованием обобщений Java) для хранения любого типа муравья, и antfarm должен указать во время выполнения, какой тип муравья он содержит.
  • Симуляция должна основываться на тиках. (Шаблон посредника) Каждый тик, каждый муравей (в случайном порядке) должен выполнять какое-то действие в зависимости от своего окружения. Дроны должны искать еду, воины должны охотиться на врагов (или возвращаться за едой, если голодны), а королевы должны давать яйцо.

Требования к интерфейсу :

Интерфейс для ant-фермы должен быть интерфейсом командной строки со следующими командами:

  • spawn X Y T - следует создать новую колонию в позиции X, Y вида T. На выходе должен быть указан идентификатор колонии, чтобы ее можно было контролировать позже.
  • Пример spawn 14 -32 Killer создает колонию муравьев-убийц в позиции x14 y-32.
  • give I R A - должен дать колонию, идентифицированную I (при создании) ресурсом R количества A.
  • Пример give 1 food 50 дает колонии 1 50 ед.
  • Пример give 3 warrior 10 дает колонии 3 10 воинов, которые появляются на базе колонии 3.

  • tick [T] - должны выполнять тиковые операции.Для удобства позвольте T не указывать и просто отметьте один раз.

  • Пример tick 10
  • Пример tick

  • summary I - должен содержать сводную информацию о колонии I. Сводная информация дает информацию об этой колонии.

  • Пример summary 1 может дать следующий вывод:

Вывод:

    Species: Killer
    Workers: 14
    Warriors: 10
    Ant Kills: 18
    Colony kills: 2 (2:Pansy 4:Gatherer)
    Ticks alive: 143
    Status: Alive
  • Пример summary 2 может дать следующий вывод:

Вывод:

    Species: Pansy
    Workers: 4
    Warriors: 0
    Ant Kills: 2
    Colony kills: 0
    Ticks Alive: 25
    Status: Killed by 1:Killer

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

Удачи и ЕСТЬ УДОВОЛЬСТВИЕ !!

1 голос
/ 18 февраля 2011

http://www.allapplabs.com/java_design_patterns/java_design_patterns.htm
Данный сайт обслуживает несколько шаблонов проектирования, а также множество примеров с решениями

0 голосов
/ 15 ноября 2011

Вы также можете взять задачи из книги «Голова с первыми шаблонами проектирования». В конце каждой главы много проблем с головоломками.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...