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


Разработка абстрактных классов

Примечание.

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

❌ НЕ СЛЕДУЕТ определять открытые или защищенные внутренние конструкторы в абстрактных типах.

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

✔️ СЛЕДУЕТ определять защищенный или внутренний конструктор в абстрактных классах.

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

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

✔️ СЛЕДУЕТ предоставить по крайней мере один конкретный тип, наследующий от каждого передаваемого абстрактного класса.

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

Фрагменты: © Корпорация Майкрософт (Microsoft Corporation), 2005, 2009. Все права защищены.

Перепечатано с разрешения Pearson Education, Inc. из книги Инфраструктура программных проектов. Соглашения, идиомы и шаблоны для многократно используемых библиотек .NET (2-е издание), авторы: Кржиштоф Цвалина (Krzysztof Cwalina) и Брэд Абрамс (Brad Abrams). Книга опубликована 22 октября 2008 г. издательством Addison-Wesley Professional в рамках серии, посвященной разработке для Microsoft Windows.

См. также