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