"Если я захочу узнать платёжный адрес клиента", - сказал первый монах, - "то у класса
Customer
должен быть метод getBillingAddress
, так же как у него есть метод getName
! Как можно отрицать элегантность моего дизайна?""Так как этот метод молча загружает адрес из базы данных!" - возразил второй. "Это не шаблон для объектов значений! Только они предназначены для хранения данных, получаемые через DAO. Надо завести класс
AddressDAO
для обращения к таблице адресов, используя метод Service
. Платёжный адрес должен быть получен непосредственно оттуда"."Но мы потеряли Объектно-Ориентированный Путь!" - крикнул первый. "Неужели мы сделаем полный оборот и вернёмся во времена языка C? Наши объекты значений немногим лучше структур, наши статические DAO и Service являются лишь коллекциями связанных функций и мы передаём идентификаторы вместо объектов, которые они представляют! Следует ли нам в следующий раз бегать на четвереньках и выть на Луну?"
"Путь Корпоративных Шаблонов Проектирования является движением к идеальной простоте, а не возвратом к примитивизму!", - сказал второй. "Доменный объект предназначен для работы в качестве его тёзки не больше, чем изображение лопаты предназначено для рытья канавы! Следует отложить в сторону внешний вид и сосредоточиться на цели!"
"Цель неотъемлема от выбранного имени!" - сказал первый. "Доменные объекты должны моделировать реальный мир!"
Второй монах ответил кулаком в живот первого монаха, согнув его. "Скажи мне," - сказал второй монах, - "в какой переменной экземпляра я ударил тебя?"
Первый монах прыгнул вперёд и двинул в ухо сопернику. "А я-то думал, что эти придатки для того, чтобы слушать!", - сказал первый, а второй пошатнулся от боли. "Какое счастье, что я отложил в сторону внешний вид и обнаружил их истинное назначение!" Его злорадство было прервано апперкотом в челюсть.
Молодая монахиня (послушница) заметила несколько учителей Java на краю толпы, молча наблюдавших за происходящим. Она подбежала к ним.
"Два монаха ещё долго будут убивать друг друга!", - сказала послушница. "Почему бы вам не разрешить их спор и не сказать нам, чья философия лучше?"
Учителя проигнорировали её. Но монахиня Жинг услышала и прошептала послушнице:
"Если бы я была монахом, который предпочитает Путь Корпоративных Шаблонов Проектирования, я бы сказала, что ты совершила ту же ошибку, что и землекоп. Вопрос существует, чтобы его разрешить, но ты заблуждаешься насчёт целей присутствующих".
"Вы хотите сказать, что учителя намерены скрыть от нас ответ?" - спросила послушница.
"Фу", - сказала Жинг. "Если бы я была монахом, который предпочитает Объектно-Ориентированный Путь, я хотела бы обратить твоё внимание на Ненаписанную Иерархию, в которой Учитель является подклассом Ученика".
Original: Full Circle