Случай 175
Плоская акула

Монах спросил Java-мастера Камю:
- Что есть принцип единоличной ответсвенности?
Камю сказал:
- Когда класс занимается только одним делом, и выполняет его целиком.
Монах спросил:
- Как мне понять, чем должен заниматься класс?
Камю сказал:
- Рыбак не строит корабли, иначе мы бы назвали его Плотником.
Монах спросил:
- Есть ли в ваших суждениях место для интерфейсов? Что если мой класс может вести себя как Рыбак, Плотник и Моряк одновременно?
Камю сказал:
- И как бы ты назвал этого трехглавого монстра?
Монах ответил:
- Шишо, в честь моего дяди. Он живет у моря и выполняет все эти задачи.
Камю сказал:
- Я бы завел в твоем классе Шишо три атрибута: Рыбак, Плотник и Моряк. Тогда Шишо может реализовать эти интерфейсы.
Монах ответил:
- Я говорю о наследовании, а вы о композиции. Мой дядя весь целиком является Рыбаком, а не только его левая нога. В чем польза объектов, если мы не точно воспроизводим модель мира?
Камю сказал:
- Если я нарисую акулу на этой странице, ты скажешь «Какая прекрасная акула!» или будешь жаловаться, что она плоская и не пытается тебя съесть?
Монах спросил:
- Но как мы узнаем, когда плоская акула достаточно похожа на акулу? Чтобы дяде Шишо не пришлось рыбачить левой ногой.
Камю сказал:
- Решить, когда, является нашей "единоличной ответственнойстью".

Комментарий Ци:
Каждый класс делает только что-то одно –
Но иногда это одно
Означает «делать слишком много всего».

Стихотворение Ци:
Однажды утром Камю взял кисть.
Двумя росчерками он нарисовал отличную акулу.
Прохожий рассмеялся: «Плоха та акула, которая не может раскрыть рта!»
Камю ответил: «И все же она смогла сказать мне, что ты глуп».

[Это не акула *]
* ru.wikipedia.org/wiki/%D0%92%D0%B5%D1%80%D0%BE%...

thecodelesscode.com/case/175