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


Вопросы разработки иерархии классов с учетом расширяемости

Обновлен: Ноябрь 2007

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

Расширение иерархии классов

Следующий список содержит некоторые предложения по упрощению расширения иерархии классов.

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

    Например, предположим, что разрабатывается иерархия классов, моделирующая аппаратное обеспечение компьютера. Начав моделирование устройств вывода, можно определить классы с именами Display, Printer и File. Затем можно определить классы, реализующие методы, определенные в базовых классах. Например, класс LCDDisplay может быть производным от Display и реализовывать метод с именем EnterPowerSaveMode.

  • Следует уделить внимание при определении типов данных и систем хранения, чтобы впоследствии избежать внесения сложных изменений. Например, лучше использовать переменную типа Long, даже если для текущих данных требуется стандартная переменная Integer.

  • Нужно предоставлять только те элементы, которые нужны производным классам. Поля и методы Private снизят конфликты имен и защитят других пользователей от использования элементов, которые, возможно, позже потребуется изменить.

  • Члены, которые требуются только производному классу, должны быть помечены как Protected. Это гарантирует, что только производные классы зависят от этих членов, и облегчает обновление этих членов во время разработки.

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

См. также

Основные понятия

Вопросы выбора уровней доступа для методов

Изменение структуры базовых классов после развертывания

Ссылки

MustInherit

MustOverride