Какова причина для названия шаблона дизайна Flyweight?
Я не являюсь носителем английского языка, и, пытаясь лучше понять этот шаблон проектирования, меня интересует происхождение этого слова для обозначения шаблона. Каковы мотивы для этого имени?
Насколько я знаю, шаблон проектирования flyweight связан со способом поддержки большого количества мелкозернистых объектов с помощью совместного использования.
Тем не менее, определения, которые я нашел для этого конкретного слова (вес в полете), относятся к боксерской категории веса менее 112 фунтов.
Итак, почему шаблон называется таким образом?
Извините, если это кажется глупым, но я действительно понятия не имею.
4 ответа
Flyweight - это боксерская категория для людей с небольшим весом.
Лёгкая модель предназначена для "лёгких" объектов (правда, многих из них).
Облегченный - или легкий вес - предполагает, что созданные классы реализуют как можно меньше кода (и содержат как можно меньше данных), чтобы выполнить свою работу.
Поэтому создание (создание и распространение их) и их обслуживание проще - подобно поднятию практически пустой коробки.
Это в отличие от тяжеловесного класса, который может переносить много данных и содержать много кода.
Шаблон flyweight используется для минимизации объема используемой памяти, когда вам нужно создать большое количество похожих объектов. Это достигается путем обмена примерами.
Название происходит от весовой классификации, как вы упоминаете, но относится к небольшому объему памяти. То есть память = вес.
Из книги ГФ:
Приспособленец — это общий объект, который можно использовать одновременно в нескольких контекстах. Легковес действует как независимый объект в каждом контексте — он неотличим от экземпляра объекта, который не является общим. Приспособленцы не могут делать предположения о контексте, в котором они действуют. Ключевым понятием здесь является различие между внутренним и внешним состоянием. Внутреннее состояние сохраняется в привесе; он состоит из информации, которая не зависит от контекста легковеса, что делает ее общедоступной. Внешнее состояние зависит от контекста легковеса и варьируется в зависимости от него, и поэтому не может использоваться совместно.
- Гамма, Эрих; Хелм, Ричард; Джонсон, Ральф; Влиссидес, Джон. Шаблоны проектирования (серия Addison-Wesley Professional Computing)
Вес в маховике используется для хранения механической энергии, которая будет передана позже (так же, как электрический индуктор или аккумулятор).
Кроме того, наилегчайший вес - это категория легкого бокса.
Принимая во внимание определение, данное GoF, я предполагаю, что этот термин изначально был выбран как метафора маховика-мухи.
Однако, поскольку наилегчайший вес также означает легкую категорию бокса, они, вероятно, назвали его шаблоном «наилегчайший вес» вместо шаблона «маховик» / «индуктор» / «аккумулятор», потому что наилегчайший вес означает как общий объект , так и легкий объект.
Нельзя не смеяться над иронией того, что механические маховики на самом деле очень тяжелые, в отличие от того факта, что этот термин используется для легкого бокса.
GoF также заявляет, что
Концепция легковесных объектов была впервые описана и исследована как метод проектирования в Interviews 3.0 [CL90].
и эту бумагу вы можете найти здесь . Авторы не объясняют, почему они так назвали его, но из документа ясно, что они определяют легковесный, совместно используемый объект.