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


Проектирование абстрактного класса

Замечание

Это содержимое перепечатывается разрешением Pearson Education, Inc. из руководства по проектированию платформы: соглашения, идиомы и шаблоны для повторно используемых библиотек .NET, 2-го выпуска. Этот выпуск был опубликован в 2008 году, и книга с тех пор была полностью пересмотрена в третьем выпуске. Некоторые сведения на этой странице могут быть устаревшими.

❌ НЕ определяйте открытые или защищенные внутренние конструкторы в абстрактных типах.

Конструкторы должны быть доступными только в случае, если пользователям потребуется создать экземпляры типа. Так как нельзя создавать экземпляры абстрактного типа, абстрактный тип с открытым конструктором неправильно разработан и вводит в заблуждение для пользователей.

✔️ Do определяет защищенный или внутренний конструктор в абстрактных классах.

Защищенный конструктор более распространен и просто позволяет базовому классу выполнять собственную инициализацию при создании подтипов.

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

✔️ Обязательно предоставьте по крайней мере один конкретный тип, наследующий от каждого абстрактного класса, который вы предоставляете.

Это помогает проверить структуру абстрактного класса. Например, System.IO.FileStream это реализация абстрактного System.IO.Stream класса.

© Часть 2005, 2009 Корпорация Майкрософт. Все права защищены.

Перепечатан с разрешения Pearson Education, Inc. из Руководство по проектированию: Соглашения, идиомы и шаблоны для повторного использования библиотек .NET, 2-е издание Кшиштоф Чвалина и Брэд Абрамс, опубликованное 22 октября 2008 года Addison-Wesley Профессиональный в рамках серии разработки Microsoft Windows.

См. также