Книга: Экстремальное программирование. Разработка через тестирование

Выделение интерфейса (Extract Interface)

Выделение интерфейса (Extract Interface)

Как создать альтернативные реализации операций в языке Java? Создайте интерфейс, в котором будут содержаться общие операции.

Как

1. Напишите объявление интерфейса. Иногда в качестве имени интерфейса используется имя существующего класса. В этом случае вы должны предварительно переименовать класс.

2. Сделайте так, чтобы существующий класс реализовывал объявленный вами интерфейс.

3. Добавьте в интерфейс все обязательные методы. В случае необходимости измените режим видимости методов класса.

4. Там, где это возможно, измените объявления с класса на интерфейс.

Зачем

Иногда необходимость выделения интерфейса возникает в случае, когда вы переходите от одной реализации к другой. Например, у вас есть класс Rectangle (прямоугольник), и вы хотите создать класс Oval (овал) – в этом случае вы создаете интерфейс Shape (фигура). В подобных ситуациях подобрать имя для интерфейса, как правило, несложно. Однако иногда приходится изрядно помучиться, прежде чем обнаружится подходящая метафора.

Иногда, когда нужно выделить интерфейс, вы используете шаблон «Тестирование обработки ошибок» (Crash Test Dummy) или «Поддельный объект» (Mock Object). В этом случае подбор подходящего имени выполняется сложнее, так как в вашем распоряжении лишь один пример использования интерфейса. В подобных случаях у меня возникает соблазн наплевать на информативность и назвать интерфейс IFile, а реализующий его класс – File. Однако я приучил себя останавливаться на мгновение и размышлять о том, достаточно ли хорошо я понимаю то, над чем работаю? Возможно, интерфейс лучше назвать File, а реализующий его класс – DiskFile, так как соответствующая реализация основана на том, что данные, содержащиеся в файле, хранятся на жестком диске.

Оглавление книги


Генерация: 0.217. Запросов К БД/Cache: 0 / 0
поделиться
Вверх Вниз