Мухи против шаблонов пула объектов: когда каждый из них полезен?
Насколько я знаю, пул объектов - это творческий паттерн, а мухи - это структурный паттерн, но на самом деле я не вижу большой разницы между ними. Может кто-нибудь объяснить мне разницу и когда каждый из них может быть полезным в реализации?
3 ответа
Одно из отличий состоит в том, что мухи обычно являются неизменяемыми, а ресурсы, полученные из пула, обычно являются изменчивыми.
Таким образом, вы создаете навесные весы, чтобы избежать затрат на повторное создание нескольких экземпляров объектов, содержащих одно и то же состояние (поскольку они все одинаковы, вы просто создаете только один и повторно используете его во всех местах в вашем приложении), в то время как ресурсы в пуле являются особенными ресурсы, которые вы хотите контролировать индивидуально и, возможно, имеют другое состояние, но вы не хотите оплачивать стоимость создания и уничтожения, поскольку все они инициализируются в одном и том же состоянии.
На ум приходят как минимум два основных различия:
- Пул объектов - это контейнер для набора объектов домена, в то время как весовой элемент обычно является объектом домена.
- Пул объектов обычно содержит набор сходных объектов, которые могут совместно использоваться, например, соединения с базой данных, в то время как обычно существует набор различных объектов типа flyweight, каждый из которых представляет свое состояние.
Этот сайт описывает обе модели с конкретными примерами. Он довольно хорошо проясняет разницу и поддерживает ответ Габриэля выше. http://www.oodesign.com/