Информация
- В рейтинге
- Не участвует
- Зарегистрирован
- Активность
Специализация
Разработчик игр, Архитектор программного обеспечения
Ведущий
C#
ООП
ASP.NET
Microsoft SQL
Разработка игр
C++
Программирование микроконтроллеров
Разработка программного обеспечения
WPF
Unity3d
Теперь к нашим баранам. Ну посмотрите на статью, про будильники. Объясните мне пожалуйста, почему LockupAlarmClock — называется абстракцией, а AlarmClockImpl — реализацией?
Это настоящая фикция, и тот и другой класс имеет и абстракцию и реализацию. Тогда важный вопрос: чем реализация LockupAlarmClock отличается от AlarmClockImpl? Да, ничем — совершенное произвольное разделение одной сущности будильник на две с неясными границами.
Зачем? Хотите скрыть от использующего детали реализации — объявите видимость private. Зачем порождение излишних сущностей? И как оказывается совсем не для этого — об этом статья и написана.
А теперь отвечая на вопрос — по сути такое использование — это вынесение всего private в отдельный класс. Зачем? Если как я показываю в статье есть причины из-за разных классификаций при наследовании, это одно (т.е. выделение в подкласс методов ответственных за под задачи — рефакторинг «Выделение подкласса»). Если же искусственно как у будильников — это только ведет к непониманию предметной задачи, точнее ее точек роста.