У сучасних графічних додатках управління пам'яттю є вирішальним для виконання і масштабності. Один ефективний дизайн-матер для зменшення споживання пам'яті є шаблоном Легковаговика. Цей шаблон дозволяє мінімізувати кількість об'єктів, створених шляхом спільного доступу до частин об'єктів, які особливо корисні в графіки, де використовуються багато подібних об'єктів.

Розуміння шаблону ваги

Шаблон Легковаговика - це структурний шаблон дизайну, який дозволяє програмам ефективно підтримувати великі кількості об'єктів, які діляться загальними даними. Замість створення нового об'єкта для кожного суб'єкта, патерн використовує існуючі об'єкти з загальним внутрішньоінтрицевим станом.

Застосування в графіку

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

Реалізація шаблону

  • Identify Intrinsic State: Визначити, які властивості поділяться серед об'єктів, таких як колір або стиль шрифту.
  • Create Легковаговик Об'єкти: Магазин спільних властивостей в об'єктах легковаговика, які можна повторно використовувати.
  • Керування екстрінсичною станцією: Тримати властивості, які залежать від об'єктів за межами об'єктів легковаговика, проходячи їх в міру необхідності.
  • Використовувати завод: Впровадження заводу-класу для управління Легковаговиками об'єктів і забезпечення повторного використання.

Приклад у коді

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

Ось спрощений приклад:

class Circle {
 constructor(x, y, radius, style) {
 this.x = x;
 this.y = y;
 this.radius = radius;
 this.style = style; // shared object
 }
}

class Style {
 constructor(color, strokeWidth) {
 this.color = color;
 this.strokeWidth = strokeWidth;
 }
}

class StyleFactory {
 constructor() {
 this.styles = {};
 }

 getStyle(color, strokeWidth) {
 const key = color + strokeWidth;
 if (!this.styles[key]) {
 this.styles[key] = new Style(color, strokeWidth);
 }
 return this.styles[key];
 }
}

// Usage
const styleFactory = new StyleFactory();
const circles = [];

for (let i = 0; i < 1000; i++) {
 const style = styleFactory.getStyle('red', 2);
 circles.push(new Circle(i, i, 10, style));
}

Переваги Легковаговика шаблон

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

Висновок

Шаблон Легковаговика є потужним інструментом для оптимізації використання пам'яті в графічних додатках. Розширюючи загальні дані та керування екструзійними властивостями окремо, розробники можуть створювати більш ефективні та масштабні системи. За допомогою цього шаблону можна стати гра-обмінником при роботі складних графіки з багатьма схожими об'єктами.