Поделиться через


Абстрактные типы и интерфейсы

Абстрактные типы и интерфейсы являются механизмами для описания программных абстракций. Абстракция описывает контракт, которого должны придерживаться производные классы и реализации класса. Для абстрактных типов имеется возможность предоставления деталей реализации; интерфейсы не могут предоставлять детали реализации.

Не предоставляйте абстракции для использования, пока не проверите их путем разработки нескольких конкретных реализаций и API, которые используют эту абстракцию.

Если вы предоставите абстракции, не проверив их в сценариях реального окружения, существует большая вероятность пропуска ошибок проектирования, которые сложно или невозможно исправить без решения проблем совместимости в будущих версиях.

При проектировании абстракции тщательно выбирайте между абстрактным классом и интерфейсом.

Подробные рекомендации относительно выбора между абстрактным типом и интерфейсом см. Выбор между классами и интерфейсами.

Продумайте тесты конкретных реализаций абстракций. Такие тесты позволят пользователям проверить правильность своих реализаций.

Кроме того, эти тесты позволят вам самостоятельно проверить правильность реализации интерфейса. Например, тест для ICollection<T> поможет проверить, что после двух вызовов метода Add в случае реализации интерфейса, значение свойства Count увеличивается на два.

Охраняется авторским правом Copyright 2005 Microsoft Corporation. Все права защищены.

Фрагменты — © Addison-Wesley Corporation. Все права защищены.

Для дополнительной информации о разработке руководящих принципов, смотрите "руководства по разработке рамок: Конвенций, идиомы и шаблоны для повторного использования.NET библиотек"книга, Кшиштоф Cwalina и Брэд Абрамс, опубликованных Addison-Wesley, 2005 года.

См. также

Другие ресурсы

Руководство по разработке библиотек классов

Разработка с обеспечением расширяемости