Many thanks to Tristan Morris for creating a beautiful illustrated hardcover print edition of the site |
|||||||||||||||||
Случилось, что два монаха из клана Смеющейся обезьяны в Большом зале ругались так громко, что привлекли любопытных. “Если я захочу узнать платёжный адрес клиента”, - сказал первый монах, - “то у класса Customer должен быть метод getBillingAddress, так же как у него есть метод getName! Как можно отрицать элегантность моего дизайна?” “Так как этот метод молча загружает адрес из базы данных!” - возразил второй. “Это не шаблон для объектов значений! Только они предназначены для хранения данных, получаемые через DAO. Надо завести класс AddressDAO для обращения к таблице адресов, используя метод Service. Платёжный адрес должен быть получен непосредственно оттуда”. “Но мы потеряли Объектно-Ориентированный Путь!” - крикнул первый. “Неужели мы сделаем полный оборот и вернёмся во времена языка C? Наши объекты значений немногим лучше структур, наши статические DAO и Service являются лишь коллекциями связанных функций и мы передаём идентификаторы вместо объектов, которые они представляют! Следует ли нам в следующий раз бегать на четвереньках и выть на Луну?” “Путь Корпоративных Шаблонов Проектирования является движением к идеальной простоте, а не возвратом к примитивизму!”, - сказал второй. “Доменный объект предназначен для работы в качестве его тёзки не больше, чем изображение лопаты предназначено для рытья канавы! Следует отложить в сторону внешний вид и сосредоточиться на цели!” “Цель неотъемлема от выбранного имени!” - сказал первый. “Доменные объекты должны моделировать реальный мир!” Второй монах ответил кулаком в живот первого монаха, согнув его. “Скажи мне,” - сказал второй монах, - “в какой переменной экземпляра я ударил тебя?” Первый монах прыгнул вперёд и двинул в ухо сопернику. “А я-то думал, что эти придатки для того, чтобы слушать!”, - сказал первый, а второй пошатнулся от боли. “Какое счастье, что я отложил в сторону внешний вид и обнаружил их истинное назначение!” Его злорадство было прервано апперкотом в челюсть. Молодая монахиня (послушница) заметила несколько учителей Java на краю толпы, молча наблюдавших за происходящим. Она подбежала к ним. “Два монаха ещё долго будут убивать друг друга!”, - сказала послушница. “Почему бы вам не разрешить их спор и не сказать нам, чья философия лучше?” Учителя проигнорировали её. Но монахиня Жинг услышала и прошептала послушнице: “Если бы я была монахом, который предпочитает Путь Корпоративных Шаблонов Проектирования, я бы сказала, что ты совершила ту же ошибку, что и землекоп. Вопрос существует, чтобы его разрешить, но ты заблуждаешься насчёт целей присутствующих”. “Вы хотите сказать, что учителя намерены скрыть от нас ответ?” - спросила послушница. “Фу”, - сказала Жинг. “Если бы я была монахом, который предпочитает Объектно-Ориентированный Путь, я хотела бы обратить твоё внимание на Ненаписанную Иерархию, в которой Учитель является подклассом Ученика”. Перевод Sergey Malenkov. Отрывок из The Codeless Code, созданная Qi (qi@thecodelesscode.com). При условии, в соответствии с условиями Creative Commons Attribution-NonCommercial 3.0 Unported License. |