Вы находитесь на странице: 1из 14

Урок 8: Интерфейсы в шаблонах

проектирования
• Анатомия цикла foreach
• Ковариантные интерфейсы
• Реализация итератора
• Вложенные классы и дружба классов
• Реализация сортировки списка
• Паттерн «Итератор»
• Паттерн «Стратегия»
IEnumerable
public interface IEnumerable
{
IEnumerator GetEnumerator();
}
IEnumerator
public interface IEnumerator
{
object Current { get; }
bool MoveNext();
void Reset();
}
IEnumerable<T>
public interface IEnumerable<out T>
: IEnumerable
{
IEnumerator<T> GetEnumerator();
}
IEnumerator<T>
public interface IEnumerator<out T>
: IDisposable, IEnumerator
{
T Current { get; }
bool MoveNext();
void Reset();
}
covariant interface
interface <out T>
{
}
Урок 8: Интерфейсы в шаблонах
проектирования
• Анатомия цикла foreach
• Ковариантные интерфейсы
• Реализация итератора
• Вложенные классы и дружба классов
• Реализация сортировки списка
• Паттерн «Итератор»
• Паттерн «Стратегия»
Дружба классов
class List
{
friend class ListIterator;

public:

private:

}
Вложенные классы
class List
{
private int mSize;

class ListIterator
{

}
}
Паттерн «Итератор»
• Последовательный доступ к элементам
• Для составного объекта
• Без раскрытия внутреннего представления
Паттерн «Итератор»
Паттерн «Стратегия»
• Семейство алгоритмов
• Инкапсуляция алгоритма
• Взаимозаменяемость алгоритмов
Паттерн «Стратегия»
Урок 8: Интерфейсы в шаблонах
проектирования
• Анатомия цикла foreach
• Ковариантные интерфейсы
• Реализация итератора
• Вложенные классы и дружба классов
• Реализация сортировки списка
• Паттерн «Итератор»
• Паттерн «Стратегия»