Увійти Реєстрація
Блог Серії
Кар'єра
Вакансії Компанії
Навчання
Співбесіди Тестування Відео
Екосистема
Пакети Ресурси Проєкти
Інше
Події Про нас
Посібники 02 липня 2026
2
Патерни проєктування

Flyweight - спільні легкі об'єкти

Flyweight зменшує споживання пам'яті, повторно використовуючи спільні екземпляри замість створення тисяч однакових об'єктів.

Яку проблему вирішує

Коли в пам'яті живуть тисячі об'єктів, які повторюють той самий незмінний стан (код країни, її назва), вони даремно дублюють однакові дані й роздувають пам'ять.

Як вирішує

Стан розділяють на внутрішній (спільний, незмінний) та зовнішній (унікальний для контексту, передається ззовні в момент виклику). Об'єкти зі спільним внутрішнім станом кешуються у фабриці й віддаються повторно.

class CountryFlyweight
{
  public function __construct(
    public string $code, 
    public string $name
  ) {}
}

class CountryFactory
{
  private array $cache = [];

  public function get(string $code, string $name): CountryFlyweight
  {
    $key = $code;
    if (!isset($this->cache[$key])) {
      $this->cache[$key] = new CountryFlyweight($code, $name);
    }
    return $this->cache[$key];
  }
}

Де застосовувати

  • Кеш довідників (країни, валюти, одиниці виміру) або спільні конфіги, які інакше дублювались би на кожен рядок вибірки.
  • Важкі цикли чи обробка великих наборів даних, де однаковий стан повторюється масово.

Плюси та мінуси

  • + Помітна економія пам'яті за масового дублювання.
  • + Спільний незмінний стан гарантовано однаковий для всіх.
  • Розділення стану на внутрішній і зовнішній ускладнює код.
  • Для невеликої кількості об'єктів економія непомітна; сучасні фреймворки і так багато кешують, тож ручний Flyweight потрібен рідко.

Ця стаття - частина серії

Патерни проєктування

11 / 11

Коментарі

Увійдіть, щоб залишити коментар

Будьте першим, хто залишить коментар!

Читайте також

Вакансії за темою

Full-time Сьогодні

Senior PHP Developer (Backend)

dok.ua Київ / Гібрид За результатами співбесіди

Працюємо як e-commerce, маємо спеціалізовану платформу з багатомільйонним товарним асортиментом. Backend: PHP 7.4, Yii/Yii2, Nginx, MySQL, SphinxSearch, Redis, RabbitMQ. Frontend: native JS, jQuery, Angular. Сьогодні dok.ua - найбільший інтернет-магазин запчастин та автотоварів в Україні. Вже 10 років, як ми успішно працюємо над створенням кращого сервісу для клієнтів та над його покращенням. Продовжуємо зростати, допомагаємо ЗСУ💪, віримо в Україну та хочемо розвивати український продукт з найкращими фахівцями. Наші продукти: Спеціалізована платформа** з багатомільйонним товарним асортиментом, яка обслуговує більше ста тисяч відвідувачів на добу; Внутрішня ERP-система** власної розробки, що дозволяє безперервно оновлювати будь-яку інформацію про товари і автоматизувати бізнес-процеси внутрішніх служб компанії на всіх етапах роботи з клієнтськими замовленнями. Досвід та технології, які нам важливі: 5+ років комерційної практики на позиції PHP Backend Developer Впевнене знання ООП, принципів SOLID, DRY, KISS PHP 7/8 Робота за MVC-патерном Yii/Yii2 - комерційна практика від 3-х років щонайменше з одним із фреймворків Laravel/Symfony/Lumen - робота з фреймворком від 2-х років Написання REST API та інтеграцій зі сторонніми сервісами Побудова мікросервісної архітектури на практиці Docker MySQL/MariaDB/PostgreSQL, оптимізація SQL-запитів Проведення або супровід навантажувального тестування (Apache Benchmark, JMeter або аналоги) Redis RabbitMQ Manticore Search (SphinxSearch) Розуміння Scrum/Kanban, робота за однією з методологій від 1 року Git, Jira, Confluence Буде плюсом: Розуміння принципів роботи з AWS та dedicated-серверами Знайомство з message brokers, окрім RabbitMQ (Kafka тощо) Знання інших мов програмування (Go, Python) Робота Elasticsearch Практика роботи з Supervisor Знайомство з системами моніторингу та логування (Grafana, Prometheus, ELK/Sentry) Бекграунд у сфері e-commerce/ERP/WMS Kubernetes Напрями задач: Робота над архітектурою систем Оптимізація коду та продуктивності Участь у переході на мікросервісну архітектуру Створення нового функціоналу в ERP та CRM системах: автоматизація роботи служб компанії, розробка інструментів управління існуючим онлайн-проєктом Інтеграція внутрішньої системи із системою складського обліку (WMS), її подальший розвиток і підтримка Розвиток та підтримка операційної частини бізнесу і внутрішніх систем управління Обов'язки: Написання якісного коду в рамках високонавантаженого проєкту Участь у проєктуванні технічних рішень та рев'ю архітектурних пропозицій команди Участь у плануванні та оцінці задач (estimation) разом з командою Проведення code review, менторство мідл/джуніор розробників Взаємодія з product owner/бізнес-аналітиками для уточнення вимог Інтеграція платіжних систем, служб доставки, аналітичних та маркетингових сервісів (тригерні e-mail/SMS розсилки, Google APIs тощо) Умови: Дружня команда; Цікаві задачі; Своєчасна зп; 2 місяці full time гібридний графік, після 2 місяців remote. Робота в офісі дозволить вам швидше освоїти нашу адмінку, яка є доволі складною, познайомитися з командою та вибудувати ефективну взаємодію; Адаптивний графік роботи (пн.-пт. з 9.00 / 10.00 до 18.00 / 19.00); Медичне страхування; Придбання товарів компанії по спеціальним умовам; Соціальні гарантії, передбачені законодавством (відпустка 24 календарних дні); Офіс в Святошинському районі (район Кільцевої дороги, 10 хв від м. Житомирська/Академмістечко).

Full-time Сьогодні

Senior PHP Developer (Laravel/Symfony)

Improveit Solutions Віддалено За результатами співбесіди

We are looking for an experienced Senior PHP Developer to join our team and help build scalable, high-quality products. In this role, you will actively contribute to architectural decisions, drive technical initiatives, and collaborate closely with the team to deliver reliable and maintainable solutions. Requirements 5+ years of professional experience in software development. Expert-level knowledge of PHP 8.x and modern development practices. 5+ years of experience with Laravel or Symfony, including a deep understanding of framework internals. Strong experience with MySQL or MariaDB, including query optimization, schema design, and database normalization. Solid understanding of REST API design principles. Proficiency with Git, including branching strategies, code reviews, and release workflows. Experience with PHPUnit and defining testing strategies. Hands-on experience with Docker and containerized production environments. Strong knowledge of caching strategies and performance optimization techniques. Experience setting up and maintaining CI/CD pipelines (GitHub preferred). Solid understanding of Composer and dependency management. Comfortable working in Linux/CLI environments. Strong understanding of web application security best practices. Soft Skills Ability to independently design and architect solutions. Strong problem-solving mindset with a focus on maintainability and scalability. Confidence to challenge requirements and propose better alternatives. Ability to translate business needs into effective technical solutions. Experience leading technical initiatives or small teams. Strong written communication skills and experience working in asynchronous environments. Nice to Have Experience in the fintech or financial services domain. Frontend development experience with Vue.js or React. Experience with cloud platforms, preferably Azure. Previous experience conducting technical interviews or participating in hiring processes. What You'll Do Design and develop scalable, high-performance applications and APIs. Participate in architectural decisions and contribute to technical strategy. Collaborate with cross-functional teams to deliver business value. Drive best practices in code quality, testing, security, and performance. Mentor team members and contribute to continuous improvement initiatives. If you enjoy solving complex technical challenges, taking ownership of architecture and technical decisions, and building products that scale, we'd love to hear from you.

Full-time Вчора

PHP Full-Stack Developer

Tech4You Віддалено до $2,000

Tech4You - українська маркетингова екосистема, що допомагає бізнесам у всьому світі масштабуватися та зростати через провідні рекламні платформи (Meta, Google, TikTok та ін.). Ми надаємо повноцінну інфраструктуру для роботи з paid-маркетингом: рекламні акаунти, фінансові рішення, експертизу та операційну підтримку. Працюємо з великими клієнтами в e-commerce, EdTech, mobile apps, lead generation та інших нішах. Кого ми шукаємо? Шукаємо мотивованого PHP Full-Stack розробника, який підсилить нашу команду та розділить роботу з досвідченим розробником над розвитком внутрішнього продукту. У нас є налагоджені процеси, тімлід, архітектор і діючий PHP-Developer. Наразі потрібен розробник, готовий одразу включитись у роботу, брати реальні задачі та рости разом із командою. Про продукт: Ми розробляємо внутрішню операційну платформу для команд, що працюють у сфері цифрової реклами. Система охоплює повний цикл: від управління клієнтськими акаунтами та обробки запитів до фінансових розрахунків та аналітичних дашбордів. Платформа активно розвивається - нові модулі, інтеграції, зростаюче навантаження. Що будеш робити? Працювати з беклогом задач різного рівня: від налаштування серверів і роботи з БД до розробки аналітичних дашбордів, таблиць розрахунків та UX-відображення даних у системі. Досвід: 2+ роки комерційного досвіду в PHP-розробці з фреймворком Laravel Must-have: PHP 8+, Laravel - впевнений рівень Інтеграції із зовнішніми сервісами: REST, webhooks, OAuth, обробка помилок MySQL (транзакції, індекси, міграції, оптимізація), Redis (кеш, локи, конкурентність) AWS: S3,SQS, бази даних, деплой, масштабування, стабільність під навантаженням Черги, воркери, фонова обробка, планувальник задач Full-stack UI: Blade / Livewire / Alpine.js, таблиці, фільтри, графіки Git: feature-branches, pull requests, code review, merge conflicts Буде плюсом: Досвід у розробці ERP/CRM-платформ. Будемо раді розглянути твою кандидатуру. Надсилай резюме - з нетерпінням чекаємо на тебе в нашій команді!

Пакети за темою

Bagisto

bagisto/bagisto

Bagisto — це платформа для електронної комерції, побудована на Laravel. Вона надає готове рішення для створення та управління інтернет-магазинами з підтримкою каталогу товарів, замовлень, платежів та клієнтів.

27,502 v2.4.7 12 12

Lang

laravel-lang/lang

Список 126 мов для Laravel Framework, Laravel Jetstream, Laravel Fortify, Laravel Breeze, Laravel Cashier, Laravel Nova, Laravel Spark та Laravel UI.

7,778 15.31.4 6