Паттерн Состояние управляет изменением поведения объекта при изменении его внутреннего состояния. Внешнее это выглядит так, словно объект меняет свой класс. Паттерн Состояние позволяет объекту иметь много разный вариантов поведения в зависимости от его внутреннего состояния. В отличие от процедурных конечных автоматов, состояние в этом паттерне представляется полноценным классом. Поведение контекста реализуется делегированием выполняемых операций текущему […]
Рубрика: Паттерны на C#
Примеры реализации паттерна проектирования на языке C#
Паттерн Компоновщик на C# на примерах
Паттерн Компоновщик объединяет объекты в древовидные структуры для представления иерархий часть\целое. Компоновщик позволяет клиенту выполнять однородные операции сами отдельными объектами и их совокупностями. Паттерн Компоновщик позволяет клиенту выполнять однородные операции с комбинациями и отдельными объектами. Паттерн Компоновщик предоставляет структуру для хранения как отдельных объектов, так и комбинаций. В реализации паттерна Компоновщик приходится искать баланс между […]
Паттерн Итератор на C# на примерах
Паттерн Итератор предоставляет механизм последовательного перебора элементов коллекции без раскрытия ее внутреннего представления. Кроме того, перебор элементов выполняется объектом итератора, а не самой коллекцией.Это упрощает интерфейс, и реализацию коллекции, а также способствует более логичному распределению обязанностей. При использовании итераторов коллекция избавляется от одной обязанности поддержки операций перебора данных. Итератор предоставляет общий интерфейс перебора элементов коллекции, […]
Паттерн Шаблонный Метод на примерах
Паттерн Шаблонный Метода задает скелет алгоритма в методе, оставляя определение реализации некоторых шагов субклассам. Субклассы могут переопределять некоторые части алгоритма без изменения его структуры. Основной задаче паттерна является создание шаблона алгоритма, то есть метод определяющий алгоритм в виде последовательности шагов. Один или несколько шагов определяются ввиде абстрактных методов, реализуемых субклассами. Таким образом гарантируется неизменность структуры […]
Паттерн Фасад примеры на C#
Паттерн Фасад— предоставляет унифицированный интерфейс к группе интерфейсов подсистемы. Фасад определяет высокоуровневый интерфейс, упрощающий работу с подсистемой. Если вам понадобится упростить большой интерфейс или семейство сложных интерфейс или семейство сложных интерфейсов. Фасад изолирует клиента от сложной подсистемы. Реализация фасада основана на композиции и делегировании. Для подсистемы можно реализовать несколько фасадов. Рассмотрим такой пример, многие из […]
Паттерн Адаптер примеры на C#
Паттерн Адаптер преобразует интерфейс класса к другому интерфейсу, на который рассчитан клиент. Адаптер обеспечивает совместную работу классов, невозможную в обычных условиях из-за несовместимости интерфейсов. Преобразует один интерфейс к другому. Мы часто видим адаптеры в реальной жизни, адаптеры для телефонов, розеток, различных устройств. Устройств может быть десятки, а для них может подходить один адаптер, который, к […]
Паттерн Команда примеры на C#
Паттерн Команда инкапсулирует запрос в виде объекта, делая возможной параметризацию клиентских объектов с другими запросами, организацию очереди или регистрацию запросов, а также поддержку отмены операций. Паттерн Команда отделяет объект, выдающий запросы, от объекта, который умеет эти запросы выполнять. Объект команды инкапсулирует получателя с операцией или набором операций. Инициатор вызываем метод Execute() объекта команды что приводит […]
Паттерн Одиночка Singleton C#
Паттерн Одиночка гарантирует что в любой момент времени существует только один экземпляр класса.Если у класса вашего приложения должен существовать только один экземпляр, воспользуйтесь паттерном Одиночка. Реализация паттерна Одиночка на языке C# использует приватный конструктор и статический метод в сочетании со статической переменной. Паттерн Одиночка предоставляет глобальную точку доступа к этому экземпляру. Давайте рассмотрим интересный пример, […]
Абстрактная фабрика в примерах на C#
Паттерн Абстрактная Фабрика предоставляет интерфейс создания семейств взаимосвязанных или взаимозависимых объектов без указания их конкретных классов. Разница между Абстрактной фабрикой и абстрактным методом в том, что абстрактный метод использует наследования, абстрактная фабрика композицию. Я упростил пример из фабричного метода, чтобы не перегружать его кодом, так как пришлось бы для каждого вида начинок, вариаций пицц итд […]
Фабричный метод в примерах на C#
Один из самых популярных паттернов, позволяет создавать различные продукты, без указания классов продуктов. Паттерн Фабричный Метод определяет интерфейс создания объекта, но позволяет субклассам выбрать класс создаваемого экземпляра. Таким образом, Фабричный Метод делегирует операцию создания экземпляра субклассам. Давайте рассмотрим пример, который предполагает создания конвейера по изготовлению пиццы. Я не буду сильно перегружать кодом, остановимся на изготовлении […]
