Я был заинтригован рассказом Роберта Мартина о "Architecture: The Lost Years". В нем он обсуждает шаблон структуры Entity, Boundary, Control, на котором основан MVC. Мне нравится идея отложить архитектурные решения. Он описал отсрочку решения о том, как реализовать уровень БД в своем собственном приложении Wiki FitNesse. Я органично отложил решения, подобные этому, в своем собственном кодировании, хотя не было предвзятого модульного дизайна, который вызвал это.Практический пример архитектуры с использованием EBC?
Я хочу лучше понять эту архитектуру EBC (которая, по-видимому, тесно связана с DCI) с практической точки зрения, чтобы я мог начать использовать ее в небольшом проекте. Я хочу извлечь выгоду из «отсрочки решений» и возможности поменять аспекты дизайна, такие как пользовательский интерфейс.
Рельсы, например, используют форму EBC (MVC), но она настолько сильно испечена, что не может легко заменить альтернативный интерфейс, таким образом преобразовывая приложение Rails в консольное приложение или настольное приложение. Интригующая вещь о дизайне для меня - это способность преобразовывать приложения, заменяя одну вещь и подключая другую. То есть, я задаюсь вопросом о создании архитектуры так, чтобы можно было, как бы говоря, заменить пользовательский интерфейс или слой персистентности. Я чувствую, что если архитектура хорошо спроектирована, связь будет низкой, и такой подвиг будет в пределах досягаемости.
Я заказал the book Иваром Джекобсоном, о котором упомянул Боб в его разговоре. Я искал онлайн совсем немного, но все примеры, которые я нашел, показывают простые диаграммы. Я говорю код. Я бы выиграл от изучения нескольких простых классов, демонстрирующих концепцию, и продемонстрировал, как можно заменить один слой (UI, DB) для какой-либо другой реализации, используя граничные классы.
Если кто-то не может указать мне хороший ресурс, иллюстрирующий это, трудно ли это взломать? Может быть, мы могли бы использовать резервный пример, используемый во многих книгах по программному обеспечению: магазин для проката видео (почти реликвия в наши дни). Просьба продемонстрировать, как можно изменить местный интерфейс или уровень БД. Одна вещь, которая меня путает, - это взгляды. Я не могу сказать по диаграммам, которые я видел, если представления являются самими граничными классами или если они просто общаются с ними. Кроме того, Боб упомянул, что первоначальное намерение EBC состояло в том, что у нас было бы много микро-представлений, а не только одного макро-представления (как мы это делаем в типичном MVC); Мне любопытно, как это может выглядеть. (Я предпочитаю Ruby или JavaScript, но, поскольку нищие не могут быть выборами, любой пример будет в порядке.)
Спасибо.
Рельсы в основном модели и контроллера; замените рендеринг и перенаправление с версиями, в которых приняты форматы «txt» и «gui», которые вы в основном выполняете - для действий нужен только хэш-парам. Просто нужны дополнительные обработчики и менее ориентированная на HTTP система определения маршрутизации/команды, хотя текущую можно кооптировать, предполагая, что типы запросов являются модификаторами команд. В мире Java вещи все время развязаны. –
Спасибо, Дейв. Я не собираюсь модифицировать Rails. Я просто хочу знать некоторые практические способы реализации EBC в новом приложении. – Mario
Я понимаю; Я просто говорю, что создание Rails делает это, а это не будет, поначалу, Геркулесовым усилием. Но это довольно туманный вопрос - пока слои разделены, все это довольно прямолинейно. Что именно вы ищете и что будет «успешной» реализацией? –