Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Опишите на языке C# код класса, реализующего паттерн «Одиночка».




 

public class Singleton {

private static Singleton instance;

private int singletonData=10;

protected Singleton() { // protected

}

public static Singleton Instance() {

if(instance==null)

instance=new Singleton();

return instance;

}

public int SingletonData {

get { return singletonData; }

}

}

В чем заключается суть паттерна «Адаптер». Приведите пример данного паттерна в библиотеке.NET FCL.

 

§ Преобразует интерфейс одного класса в интерфейс другого, который ожидают клиенты

§ Адаптер обеспечивает совместную работу классов с несовместимыми интерфейсами, которая без него была бы невозможна.

Пример: TextReader, StreamReader, Stream из FCL

 

 

Изобразите диаграммы классов и объектов для паттерна «Компоновщик».

 

- Классы

 

- - Объекты

Придумайте пример конкретной задачи, когда целесообразно было бы использовать паттерн «Декоратор». Изобразите диаграмму классов для данного примера.

Необходимо использовать объект, который будет либо отрисовывать границы (border), либо скроллинг (scroll). Независимо от того, какой объект будет создан, эти действия вызываются одним методом (draw). Для этого создается отдельный интерфейс Decorator с методами нужного компонента (VisualComponent), от него наследуются два типа объектов – ScrollDecorator и BorderDecorator, в каждом из которых нужный метод расширен по-своему

 

 

 

 

В каких ситуациях следует использовать паттерн «Заместитель»?

1. Докажите, что классы UnmutableList, UnmutableSet и т.д. из практических задач на первую аттестацию реализуют паттерн «Заместитель». Какие классы в данных задачах с позиции паттерна «Заместитель» являются следующими участниками данного паттерна: Subject, RealSubject, Proxy?

Является суррогатом другого объекта и контролирует доступ к нему

Используется в случаях:

удаленный заместитель предоставляет локального представителя вместо объекта, находящегося в другом адресном пространстве;

виртуальный заместитель создает «тяжелые» объекты по требованию;

защищающий заместитель контролирует доступ к исходному объекту;

«умная» ссылка – это замена обычного указателя; позволяет выполнить дополнительные действия при доступе к объекту;

Классы UnmutableList, UnmutableMap и т.д. из 1-го практического задания – типичные заместители

Контролируют доступ к используемому объекту

Объясните, в чем заключается суть паттерна «Цепочка обязанностей»?

 

Позволяет избежать привязки отправителя запроса к его получателю, давая шанс обработать запрос нескольким объектам

Связывает объекты-получатели в цепочку и передает запрос вдоль этой цепочки, пока его не обработают

Объясните, в чем заключается суть паттерна «Команда»?

 

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

С помощью каких языковых средств в языке C# поддерживается итераторы? Приведите фрагменты кода.

 

Итераторы могут быть обобщенными - IEnumerable<T>

foreach(Student student in studentGroup) { … }

Языковые средства для итерации по объектам итератора

public class StudentGroup {

public IEnumerable<Student> Students {

get {

for(int i=0; i<count; i++)

return yield students[i];

}

}

Языковые средства для упрощения создания итераторов

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...