Книга: Экстремальное программирование. Разработка через тестирование
Выделение интерфейса (Extract Interface)
Выделение интерфейса (Extract Interface)
Как создать альтернативные реализации операций в языке Java? Создайте интерфейс, в котором будут содержаться общие операции.
Как
1. Напишите объявление интерфейса. Иногда в качестве имени интерфейса используется имя существующего класса. В этом случае вы должны предварительно переименовать класс.
2. Сделайте так, чтобы существующий класс реализовывал объявленный вами интерфейс.
3. Добавьте в интерфейс все обязательные методы. В случае необходимости измените режим видимости методов класса.
4. Там, где это возможно, измените объявления с класса на интерфейс.
Зачем
Иногда необходимость выделения интерфейса возникает в случае, когда вы переходите от одной реализации к другой. Например, у вас есть класс Rectangle (прямоугольник), и вы хотите создать класс Oval (овал) – в этом случае вы создаете интерфейс Shape (фигура). В подобных ситуациях подобрать имя для интерфейса, как правило, несложно. Однако иногда приходится изрядно помучиться, прежде чем обнаружится подходящая метафора.
Иногда, когда нужно выделить интерфейс, вы используете шаблон «Тестирование обработки ошибок» (Crash Test Dummy) или «Поддельный объект» (Mock Object). В этом случае подбор подходящего имени выполняется сложнее, так как в вашем распоряжении лишь один пример использования интерфейса. В подобных случаях у меня возникает соблазн наплевать на информативность и назвать интерфейс IFile, а реализующий его класс – File. Однако я приучил себя останавливаться на мгновение и размышлять о том, достаточно ли хорошо я понимаю то, над чем работаю? Возможно, интерфейс лучше назвать File, а реализующий его класс – DiskFile, так как соответствующая реализация основана на том, что данные, содержащиеся в файле, хранятся на жестком диске.
- Согласование различий (Reconcile Differences)
- Изоляция изменений (Isolate Change)
- Миграция данных (Migrate Data)
- Выделение метода (Extract Method)
- Встраивание метода (Inline Method)
- Выделение интерфейса (Extract Interface)
- Перемещение метода (Move Method)
- Метод в объект (Method Object)
- Добавление параметра (Add Parameter)
- Параметр метода в параметр конструктора (Method Parameter to Constructor Parameter)
- Chapter 15. Graphical User Interfaces for Iptables
- 3.2.1.2. Начальное выделение памяти: malloc()
- Не допускайте того, чтобы поток пользовательского интерфейса блокировался на длительное время
- Displaying Interface Statistics
- QueryInterface и IUnknown
- Основы интерфейса Access 2007
- Урок 2.3. Настройка интерфейса Windows Vista
- Выделение огромных объемов памяти
- Выделение группы файлов
- Настройка интерфейса Word
- Выделение ячеек
- Выделение памяти