Интерфейс как граница зависимости
Интерфейс фиксирует вызываемый контракт; реализация решает, как его выполнить.
interface ArticleRepositoryПример
<?php
interface ArticleRepository {
public function find(int $id): ?Article;
public function save(Article $article): void;
}Граница
Сценарий зависит от ArticleRepository, а PDO-реализация остаётся снаружи. Тест может подставить реализацию в памяти без базы.
Размер
Интерфейс описывает потребность клиента. Большой универсальный repository с десятками методов заставляет реализации зависеть от лишнего.
Ошибка
Интерфейс IArticle с единственной реализацией не приносит пользы сам по себе. Он оправдан границей, сменяемостью или тестовым seam.
Задание
Опишите Clock с методом now() и объясните, почему это упрощает тестирование времени.
Закрепите материал
Отметка, заметка, чек-лист и ответы остаются в localStorage этого браузера и не отправляются в аналитику.
Связанные материалы
Источники и проверка
- PHP Documentation Group — структурный источник, без внешней ссылки
Последняя содержательная проверка: . Автор-разработчик Михаил Каржин. Методика качества контента.