Строитель (Builder) — шаблон проектирования, который инкапсулирует создание объекта и позволяет разделить его на различные этапы. Когда использовать паттерн Строитель? Когда процесс создания нового объекта не должен зависеть от того, из каких частей этот объект состоит и как эти части…
Прототип (Prototype)
Паттерн Прототип (Prototype) позволяет создавать объекты на основе уже ранее созданных объектов-прототипов. То есть по сути данный паттерн предлагает технику клонирования объектов. Когда использовать Прототип? Когда конкретный тип создаваемого объекта должен определяться динамически во время выполнения Когда нежелательно создание отдельной…
Одиночка (Singleton, Синглтон)
Одиночка (Singleton, Синглтон) — порождающий паттерн, который гарантирует, что для определенного класса будет создан только один объект, а также предоставит к этому объекту точку доступа. Когда надо использовать Синглтон? Когда необходимо, чтобы для класса существовал только один экземпляр Синглтон позволяет…
Абстрактная фабрика» (Abstract Factory)
Паттерн «Абстрактная фабрика» (Abstract Factory) предоставляет интерфейс для создания семейств взаимосвязанных объектов с определенными интерфейсами без указания конкретных типов данных объектов. Когда использовать абстрактную фабрику Когда система не должна зависеть от способа создания и компоновки новых объектов Когда создаваемые объекты…
Фабричный метод (Factory Method)
Фабричный метод (Factory Method) — это паттерн, который определяет интерфейс для создания объектов некоторого класса, но непосредственное решение о том, объект какого класса создавать происходит в подклассах. То есть паттерн предполагает, что базовый класс делегирует создание объектов классам-наследникам. Когда надо…
Шаблоны игрового проектирования
Паттерны GoF(Банда 4) Порождающие паттерны: Фабричный метод (Factory Method) Фабричный метод (Factory Method) — это паттерн, который определяет интерфейс для создания объектов некоторого класса, но непосредственное решение о том, объект какого класса создавать происходит в подклассах. То есть паттерн предполагает,…
GRASP
Информационный эксперт (Information Expert) Низкая связанность (Low Coupling) Высокое зацепление (High Cohesion) Устойчивый к изменениям (Protected Variantions) Контроллер (Controller) Полиморфизм (Polymorphism) Чистая выдумка (Pure Fabrication) Перенаправление (Indirection) Создатель (Creator) GRASP (General Responsibility Assignment Software Patterns) — шаблоны проектирования, используемые для решения…
Шаблоны проектирования. Архитектурные шаблоны(MVC, MVP, MVVM, компонентный подход, ECS
Model-View-Controller (MVC, «Модель-Представление-Контроллер», «Модель-Вид-Контроллер») — схема разделения данных приложения и управляющей логики на три отдельных компонента: модель, представление и контроллер — таким образом, что модификация каждого компонента может осуществляться независимо[1]. MVP (Model-View-Presenter) — паттерн разработки пользовательского интерфейса. Шаблон MVP является производным от MVC, но при…
Сложность алгоритма. Big O notation
Big O нотация нужна для описания сложности алгоритмов. Для этого используется понятие времени. Big-O позволяет оценить, насколько время выполнения алгоритма зависит от переданных в него данных. Начнем с самого простого: O(1) Возьмем массив из 5 чисел: Допустим надо получить первый…
Алгоритмы сортировки c#
Алгоритмы сортировки – это популярная тема, на разбор которой в университетах отводится несколько месяцев. Но зачем вообще в 20?? году изучать алгоритмы, если в CLR уже и так встроен и прекрасно работает адаптивный метод Sort() для любых коллекций? А причин…