Меня заинтриговал Роберт Мартин, говорящий о "Архитектура: Потерянные годы" . В нем он обсуждает шаблон структуры Entity, Boundary, Control, на котором основан MVC. Мне нравится идея отложить архитектурные решения. Он описал отсрочку решения о том, как реализовать уровень БД в своем собственном приложении Wiki FitNesse. Я органично отложил решения, подобные этому, в моем собственном кодировании, хотя не было предвзятого модульного дизайна, который вызвал это.
Я хочу лучше понять эту архитектуру EBC (которая, по-видимому, тесно связана с DCI) с практической точки зрения, чтобы я мог начать использовать ее в небольшом проекте. Я хочу извлечь выгоду из "отложенных решений" и возможности поменять аспекты дизайна, такие как пользовательский интерфейс.
Rails, например, использует форму EBC (MVC), но она так сильно испекла, что не может легко заменить альтернативный интерфейс, таким образом преобразовывая приложение Rails в консольное приложение или настольное приложение. Интригующая вещь о дизайне для меня - это способность преобразовывать приложения, заменяя одну вещь и подключая другую. То есть, я задаюсь вопросом о создании архитектуры так, чтобы можно было, как бы говоря, заменить пользовательский интерфейс или слой персистентности. Я чувствую, что если архитектура хорошо спроектирована, связь будет низкой, и такой подвиг будет в пределах досягаемости.
Я заказал книгу Ивар Джекобсон, о которой упомянул Боб в его разговоре. Я искал онлайн совсем немного, но все примеры, которые я нашел, показывают простые диаграммы. Я говорю код. Я бы выиграл от изучения нескольких простых классов, демонстрирующих концепцию, и продемонстрировал, как можно заменить один слой (UI, DB) для какой-либо другой реализации, используя граничные классы.
Если кто-то не может указать мне на хороший ресурс, иллюстрирующий это, трудно ли это взломать? Может быть, мы могли бы использовать резервный пример, используемый во многих книгах по программному обеспечению: магазин для проката видео (почти реликвия в наши дни). Просьба продемонстрировать, как можно изменить локальный интерфейс или уровень БД. Одна вещь, которая меня смущает, - это взгляды. Я не могу сказать по диаграммам, которые я видел, если представления являются самими граничными классами или если они просто общаются с ними. Кроме того, Боб упомянул, что первоначальное намерение EBC состояло в том, что у нас было бы много микро-представлений, а не только одного макро-представления (как мы это делаем в типичном MVC); Мне любопытно, как это может выглядеть. (Я предпочитаю Ruby или JavaScript, но, поскольку нищие не могут быть выборами, любой пример будет в порядке.)
Спасибо.