Ruby. Объектно-ориентированное проектирование [Сэнди Метц] (pdf) читать постранично, страница - 3

Книга в формате pdf! Изображения и текст могут не отображаться!


 [Настройки текста]  [Cбросить фильтры]

наследовании................................................146
Как определить, где требуется наследование........................................................147
Начнем с конкретного класса...........................................................................147
Встраивание нескольких типов........................................................................149
Поиск встраиваемых типов..............................................................................152
Выбор наследования........................................................................................153
Прорисовка наследственных связей................................................................155
Ошибочное применение наследования..................................................................156
Поиск абстракции..................................................................................................158
Создание абстрактного родительского класса.................................................159
Перемещение вверх абстрактного поведения..................................................163
Отделение абстрактного от конкретного..........................................................166
Использование схемы шаблонного метода......................................................168
Реализация каждого шаблонного метода.........................................................170
Управление связанностью родительских классов и подклассов.............................172
Общие сведения о связанности.......................................................................173
Устранение связанности подклассов с использованием хук-сообщений..........177
Выводы..................................................................................................................182
Глава 7. Разделение ролевого поведения с помощью модулей.............................184
Основные сведения о ролях...................................................................................185
Поиск ролей.....................................................................................................185
Организация обязанностей..............................................................................187
Устранение ненужных зависимостей................................................................190
Выявление неявного типа, подходящего для планирования.............................190
Нужно позволить объектам говорить самим за себя.........................................191
Написание конкретного кода..................................................................................192
Извлечение абстракции.........................................................................................195
Поиск методов.......................................................................................................199
Грубое упрощение...........................................................................................199
Уточненное объяснение...................................................................................201
Почти полное объяснение................................................................................203
Наследование ролевого поведения..................................................................205
Написание наследуемого кода...............................................................................205
Выявление антишаблонов................................................................................205

10

Оглавление
Принуждение к абстракции..............................................................................206
Соблюдение контракта.....................................................................................207
Использование схемы шаблонного метода......................................................208
Превентивное отделение классов....................................................................208
Создание неглубоких иерархий........................................................................208

Выводы..................................................................................................................210
Глава 8. Объединение объектов путем составления композиции..........................211
Составление композиции Bicycle (велосипед) из Parts (частей).............................212
Обновление класса Bicycle...............................................................................212
Создание иерархии Parts.................................................................................214
Составление композиции для объекта Parts...........................................................217
Создание Part..................................................................................................217
Придание объекту Parts большей схожести с массивом...................................221
Изготовление Parts-объектов.................................................................................225
Создание модуля PartsFactory..........................................................................226
Применение PartsFactory.................................................................................228
Bicycle в виде композиции......................................................................................230
Выбор между наследованием и композицией........................................................234
Приемлемость наследования...........................................................................234
Приемлемость композиции..............................................................................237
Выбор характера отношений............................................................................239
Выводы..................................................................................................................242
Глава 9. Проектирование экономически эффективных тестов...............................243
Целенаправленное тестирование...........................................................................244
Осознание намерений......................................................................................245
Выявление предмета тестирования.................................................................247
Умение определять нужный момент для тестирования.....................................251
Умение проводить тестирование......................................................................253
Тестирование входящих сообщений.......................................................................255
Удаление неиспользуемых интерфейсов..........................................................257
Проверка открытого интерфейса.....................................................................258
Изоляция тестируемого объекта......................................................................260
Внедрение зависимостей с использованием