← Назад к вопросам

Какие знаешь паттерны?

2.0 Middle🔥 231 комментариев
#Паттерны проектирования

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Паттерны проектирования в Unity разработке

На протяжении 10+ лет работе я активно применяю классические паттерны GoF и специфические для игростроения архитектурные решения. Рассмотрю наиболее практичные из них.

Creational Паттерны

Singleton — часто используется для глобального состояния:

public class GameManager : MonoBehaviour
{
    private static GameManager _instance;

    public static GameManager Instance
    {
        get {
            if (_instance == null)
                _instance = FindObjectOfType<GameManager>();
            return _instance;
        }
    }
}

Object Pool — критичен для оптимизации в мобильных играх

public class BulletPool
{
    private Queue<Bullet> _available = new Queue<Bullet>();
    private List<Bullet> _active = new List<Bullet>();
    
    public Bullet Get()
    {
        Bullet bullet = _available.Count > 0 ? _available.Dequeue() : Instantiate(_prefab);
        _active.Add(bullet);
        bullet.gameObject.SetActive(true);
        return bullet;
    }
}

Factory — для создания врагов, предметов, эффектов

Behavioral Паттерны

State Machine — для управления состояниями персонажа

public abstract class PlayerState
{
    protected PlayerController _player;
    
    public virtual void Enter(PlayerController player) => _player = player;
    public abstract void Execute();
    public abstract void Exit();
}

Command Pattern — для системы команд и переиграния

public interface ICommand
{
    void Execute();
    void Undo();
}

public class MoveCommand : ICommand
{
    private Vector3 _previousPosition;
    private Vector3 _newPosition;

    public void Execute() => _transform.position = _newPosition;
    public void Undo() => _transform.position = _previousPosition;
}

Observer/Event System — для слабой связности компонентов

Structural Паттерны

  • Facade — упрощение интерфейса сложных подсистем (AudioManager)
  • Decorator — добавление функциональности к оружию (Enchantments)
  • Strategy — различные AI поведения (AggressiveEnemy, DefensiveEnemy)

Специфичные для Unity

  • Service Locator — инъекция зависимостей
  • MVC/MVP — разделение UI логики от бизнеса
  • ScriptableObject Config — конфигурирование без кода
  • Coroutines — асинхронное управление потоками
  • Scriptable Render Pipeline — для кастомной графики

Я постоянно изучаю новые подходы, экспериментирую в сайд-проектах и рефакторю старый код, применяя свежие знания и best practices.

Какие знаешь паттерны? | PrepBro