Что такое Flyweight?

Ответ

Разделение общего состояния между множеством объектов для экономии памяти. Общее состояние выносится в один объект (flyweight), уникальное хранится снаружи.

class TreeType {
    public function __construct(private string $name, private string $color) {}
}
class TreeFactory {
    private array $types = [];
    public function getType(string $name, string $color): TreeType {
        $key = $name . '-' . $color;
        return $this->types[$key] ??= new TreeType($name, $color);
    }
}

Применение: символы в текстовом редакторе, деревья в игре, повторяющиеся иконки.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.