Middle+
21
0
questionbank

Что такое паттерн проектирования 'Приспособленец' (Flyweight)?

Ответ от нейросети sobes.tech

Приспособленец — это структурный паттерн проектирования, который позволяет экономить память за счёт разделения состояния между несколькими объектами. Он применяется, когда в приложении много однотипных объектов, и большая их часть имеет одинаковое состояние.

Паттерн разделяет состояние объекта на две части:

  1. Внутреннее состояние (Intrinsic State): Состояние, общее для всех объектов и не зависящее от их контекста. Оно хранится внутри Приспособленца и разделяется между многими клиентами.
  2. Внешнее состояние (Extrinsic State): Состояние, зависящее от контекста использования объекта. Оно передаётся клиентом в методы Приспособленца по мере необходимости.

Основные компоненты паттерна:

  • Flyweight (Приспособленец): Интерфейс или абстрактный класс, объявляющий методы, которые принимают внешнее состояние в качестве параметра.
  • ConcreteFlyweight (Конкретный Приспособленец): Класс, реализующий интерфейс Flyweight и хранящий внутреннее состояние.
  • FlyweightFactory (Фабрика Приспособленцев): Класс, управляющий созданием и кешированием объектов ConcreteFlyweight. Он проверяет, существует ли уже Приспособленец с заданным внутренним состоянием, и возвращает его, либо создает новый.
  • Client (Клиент): Объект, использующий Приспособленцев, который хранит внешнее состояние и вызывает методы Приспособленцев, передавая это состояние.

Пример использования: текстовый редактор. Символы (буквы, цифры) могут быть Приспособленцами. Внутреннее состояние символа - это сам символ (например, 'A'). Внешнее состояние - это его позиция, цвет, размер шрифта. Вместо создания нового объекта для каждого символа в документе, создается только один объект

Приспособленец — это структурный паттерн проектирования, который позволяет экономить память за счёт разделения состояния между несколькими объектами. Он применяется, когда в приложении много однотипных объектов, и большая их часть имеет одинаковое состояние.

Паттерн разделяет состояние объекта на две части:

  1. Внутреннее состояние (Intrinsic State): Состояние, общее для всех объектов и не зависящее от их контекста. Оно хранится внутри Приспособленца и разделяется между многими клиентами.
  2. Внешнее состояние (Extrinsic State): Состояние, зависящее от контекста использования объекта. Оно передаётся клиентом в методы Приспособленца по мере необходимости.

Основные компоненты паттерна:

  • Flyweight (Приспособленец): Интерфейс или абстрактный класс, объявляющий методы, которые принимают внешнее состояние в качестве параметра.
  • ConcreteFlyweight (Конкретный Приспособленец): Класс, реализующий интерфейс Flyweight и хранящий внутреннее состояние.
  • FlyweightFactory (Фабрика Приспособленцев): Класс, управляющий созданием и кешированием объектов ConcreteFlyweight. Он проверяет, существует ли уже Приспособленец с заданным внутренним состоянием, и возвращает его, либо создает новый.
  • Client (Клиент): Объект, использующий Приспособленцев, который хранит внешнее состояние и вызывает методы Приспособленцев, передавая это состояние.

Пример использования: текстовый редактор. Символы (буквы, цифры) могут быть Приспособленцами. Внутреннее состояние символа - это сам символ (например, 'A'). Внешнее состояние - это его позиция, цвет, размер шрифта. Вместо создания нового объекта для каждого символа в документе, создается только один объект

Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.

design-patternsobject-orientationmemory-management