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