Рекомендации по программированию. Интерфейсы чаще всего используются для задания общих свойств объектов раз­личных иерархий

Интерфейсы чаще всего используются для задания общих свойств объектов раз­личных иерархий. Основная идея интерфейса состоит в том, что к объектам классов, реализующих интерфейс, можно обращаться одинаковым образом, при этом каждый класс может определять элементы интерфейса по-своему. Если некий набор действий имеет смысл только для какой-то конкретной иерар­хии классов, реализующих эти действия разными способами, уместнее задать этот набор в виде виртуальных методов абстрактного базового класса иерархии.

В С# поддерживается одиночное наследование для классов и множественное -для интерфейсов. Это позволяет придать производному классу свойства несколь­ких базовых интерфейсов. Класс должен определять все методы всех интерфей­сов, которые имеются в списке его предков.

В библиотеке.NET определено большое количество стандартных интерфейсов. Реализация стандартных интерфейсов в собственных классах позволяет исполь­зовать для объектов этих классов стандартные средства языка и библиотеки.

Например, для обеспечения возможности сортировки объектов стандартными ме­тодами следует реализовать в соответствующем классе интерфейсы IComparable или IComparer. Реализация интерфейсов IEnumerable и IEnumerator дает возможность просматривать содержимое объекта с помощью конструкции foreach, а реализа­ция интерфейса ICloneable — клонировать объекты.

Использование итераторов упрощает организацию перебора элементов и позво­ляет задать для одного и того же класса различные стратегии перебора.

Область применения структур — типы данных, имеющие небольшое количест­во полей, с которыми удобнее работать как со значениями, а не как со ссылками. Накладные расходы на динамическое выделение памяти для экземплятров не­больших классов могут весьма значительно снизить быстродействие программы, поэтому их эффективнее описывать как структуры.

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

Делегаты, события и потоки выполнения 1

В этой главе рассматриваются делегаты и события — два взаимосвязанных сред­ства языка С#, позволяющие организовать эффективное взаимодействие объек­тов. Во второй части главы приводятся начальные сведения о разработке много­поточных приложений.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: