Как реализовать самый дешевый отель Finder с использованием шаблонов проектирования? - PullRequest
0 голосов
/ 26 декабря 2011

6 месяцев назад, я дал интервью ThoughtWorks и был в раунде кодирования.Я хочу улучшить свои навыки OO-проектирования

Я прочитал шаблоны проектирования First First для начала и получил общее представление об общих шаблонах проектирования вокруг.и хотя я сейчас работаю над iOS, я изучаю Objective C. и натолкнулся на различные шаблоны проектирования, применяемые через динамический язык и понимающие вещи.

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

и может быть несколько советов о том, как улучшить такие навыки.

Вот проблема.

Есть отельцепь.Есть три ветви LakeWood, Rosewood и XyzWood.и все они 4 типа тарифов в зависимости от комбинации, будь то день будний, выходные, а клиент - вознаграждение или регулярный.

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

Я пришел к нам со следующими уроками в терминах Java.

  • Отель: с рейтингами, именем и 4 типами тарифов
  • Интерфейс HotelFinder, который имеет метод поиска, который возвращает Hotel.
  • Класс CheapestHotelFinder, который реализует этот интерфейс иимеет атрибуты типа Customer или Customer, которые могут быть перечислением [не уверен] и списком дат.
  • Вероятно, класс Customer, в котором сведениями о клиентах являются даты n типа, и этот клиент передается искателю.
  • Можно ли использовать подобный интерфейс для класса отеля?
  • и класса системы бронирования Singleton, который сделает всю работу за нас.

Iя застрял здесь.Я надеюсь, что кто-нибудь может помочь мне с дизайном.

Ответы [ 2 ]

1 голос
/ 14 января 2014

Я думаю, что @root выбрал Стратегию (http://en.wikipedia.org/wiki/Strategy_pattern) из-за этого утверждения «программа должна быть гибкой, чтобы можно было использовать новый алгоритм для поиска лучшего отеля».

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

Этот подход позволит отделить данные (бобы отеля) от алгоритма оценкимы называем это «функцией вектора функции»?).

0 голосов
/ 01 апреля 2014

Я думаю, что шаблонный шаблон лучше подходит здесь.1. создать интерфейс отеля 2. создать 3 класса отеля (реализует интерфейс отеля) LakeWood, Rosewood и xyzWood

  1. теперь создайте класс клиента, и у него также будет ряд дат.

    здесь и класс Customer, и класс Hotel оба независимы.

  2. теперь создайте интерфейс, скажем, LogicInterface, который будет иметь метод, и этот метод будет передан как customer и List hotels в качестве параметра, ивернется самый дешевый отель.Теперь мы создадим класс, реализующий логику поиска отеля LogicInterface.cheap. В этом классе будет использоваться здесь «шаблонный шаблон», потому что в дальнейшем будет изменена логика поиска дешевого отеля, мы создадим новый класс, который будет реализовывать LogicInterfaceодна строчная смена завершит нашу работу, и там, где любое изменение кода потребуется.

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