Фабричный метод (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() для любых коллекций? А причин…
Hashtable и коллизии
Хеш-таблица (hashtable) — это структура данных, представляющая собой специальным образом организованный набор элементов хранимых данных. Все данные хранятся в виде пар «ключ-значение». Данная структура похожа на словарь (map), но имеет особенности такие как применение хеш-функции для увеличения скорости поиска. Принцип работы…
В чем разница между array и List?
Хотя в языке C# есть массивы, которые хранят в себе наборы однотипных объектов, но работать с ними не всегда удобно. Например, массив хранит фиксированное количество объектов, однако что если мы заранее не знаем, сколько нам потребуется объектов. И в этом…
Структуры данных
Связный список Двусвязные списки Стек на основе массива Стек Очередь Дек Кольцевой односвязный список Кольцевой двусвязный список Связный список (Linked List) представляет набор связанных узлов, каждый из которых хранит собственно данные и ссылку на следующий узел. В реальной жизни связный…
SOLID
Вот как расшифровывается акроним SOLID: S: Single Responsibility Principle (Принцип единственной ответственности). O: Open-Closed Principle (Принцип открытости-закрытости). L: Liskov Substitution Principle (Принцип подстановки Барбары Лисков). I: Interface Segregation Principle (Принцип разделения интерфейса). D: Dependency Inversion Principle (Принцип инверсии зависимостей). Принцип единственной ответственности — Каждый класс…