Design Patterns in C#
(изборен курс към ФМИ на СУ, летен семестър, 2005/2006 г.)














Първата лекция ще се
проведе на 20 Февруари

Intro Java book logo








Учебна програма

  • Увод – запознаване с основите на обектно-ориентирания дизайн.

Creational Patterns

  • The Factory Method – дефинира интерфейс за създаване на обект, но позволява на подкласовете да решат кой клас да инстанцират. Метод фабрика дава възможност на класа да преотстъпи процеса на създаване на под класове.
  • The Abstract Factory Pattern – предоставя интерфейс за създаване на семейства взаимосвързани или зависими обекти, без да се задават конкретните им класове.
  • The Singleton Pattern – осигурява наличието на само един представител на даден клас и предоставя глобална точка за достъп до него.
  • The Builder Pattern - разграничава създаването на сложен обект от представянето му, така че един и същ процес да може да създава обекти с различни представяния.
  • The Prototype Pattern – Отделя видовете обекти посредством прототипен представител и създава нови обекти чрез копиране на този прототип.

Structural Patterns

  • The Adapter Pattern – Преобразува интерфейса на даден клас в друг такъв, очакван от клиента. Този шаблон дава възможност на класове да работят заедно в случаите, когато по принцип това е невъзможно поради несъответствие в интерфейси.
  • The Bridge Pattern – Разделя абстракцията от нейната имплементация, така че двете да могат да се променят независимо.
  • The Composite Pattern – композира обекти в дървовидни структури за пренасяне на йерархии от типа „части на цялото”. Този шаблон дава възможност за третиране по един и същ начин както на отделни обекти, така и композиции от обекти.
  • The Decorator Pattern – Допълнително разширява даден обект. Този шаблон дава гъвкава алтернатива на наследяването за разширяване на функционалността.
  • The Faηade Pattern – Предоставя унифициран интерфейс към набор от интерфейси в дадена подсистема. Този шаблон дефинира интерфейс от по- високо ниво, който улеснява употребата на подсистемата.
  • The Flyweight Pattern - Използва поделяне за ефективна поддръжка на големи количества малки обекти.
  • The Proxy Pattern – Предоставя заместител или празна имплементация на друг обект, за да се контролира достъпа до него.

Behavioral Patterns

  • Chain of Responsibility – Избягва обвързването на изпращача на дадена заявка с получателя и като дава възможност на няколко обекта да обработят заявката. Свързва заедно приемащите обекти и предава заявката по веригата, докато някой от тях я обработи.
  • The Command Pattern – Капсулира заявките във вид на обекти, така че клиентите да могат да се параметризират с различни заявки, да подреждат в опашката или да документират заявки, или да поддържат операции по отмяна на действие или възстановяването му.
  • The Interpreter Pattern – При даден език, дефинира представяне на граматиката му заедно с интерпретатор, използващ това представяне за превод на изречения на този език.
  • The Iterator Pattern - Предоставя начин за последователен достъп до елементите на сложен обект, без да се разкрива същинското му представяне.
  • The Mediator Pattern – Дефинира обект, капсулиращ взаимоотношенията в даден набор от обекти. Посредник съдейства за разхлабването на връзките, като не позволява на обектите да се обръщат изрично един към друг и дава възможност свободно да се променят взаимоотношенията им.
  • The Memento Pattern – Без да нарушава капсулирането на данните, запазва вътрешното състояние на даден обект на външен носител, така че той да може да бъде възстановен в това състояние по – късно.
  • The Observer Pattern - Дефинира зависимост от типа „ Едно към много” между обекти, така че когато един обект промени състоянието си, всички зависими от него обекти да бъдат уведомени и обновявани автоматично.
  • The State Pattern - Позволява на даден обект да промени поведението си , когато вътрешното му състояние се променя. Отвън ще изглежда сякаш обекта се е превърнал в обект от друг клас.
  • The Strategy Pattern – Дефинира семейство алгоритми, капсулира всеки от тях и ги прави взаимозаменяеми. Този шаблон дава възможност на алгоритмите да се променят независимо от клиентите ,които ги използват.
  • The Template Method Pattern – Дефинира скелета на алгоритъма в операция, оставяйки някои стъпки на подкласове. Шаблонен метод позволява на подкласовете да предефинират определени стъпки от даден алгоритъм, без да се променя структурата им.
  • The Visitor Pattern – Представя операции, които се извършват върху елементите на обектна структура. Този шаблон дава възможност да се дефинира нова операция, без да се променят класовете на елементите, върху които работи тя.