2009-11-14 21 views

Respuesta

11

El Builder se utiliza para crear muchos objetos, por lo que el patrón de peso mosca es de aproximadamente compartir una colección de objetos tales.

Estos dos patrones se refieren a "materiales compuestos", es decir, objetos que pueden tener varios elementos, pero que no necesitan ser utilizados en conjunto. El caso de uso arquetipo de peso mosca es donde un grupo de unas pocas docenas de caracteres objetos se utilizan una y otra vez en una aplicación de edición de texto (este es el ejemplo dado en la "GoF" book) flyweight

9

Directamente de la wikipedia.

Flyweight

peso mosca es un diseño patrón de software. Un flyweight es un objeto que minimiza el uso de la memoria al compartir como tantos datos como sea posible con otros objetos similares ; es una forma de utilizar objetos en grandes cantidades cuando una representación repetida simple usaría una cantidad inaceptable de memoria.

Builder

El Builder es un patrón de diseño de software . La intención es pasos abstractos de construcción de objetos para que las diferentes implementaciones de estos pasos puedan construir diferentes representaciones de objetos .

Uno ayuda con la construcción de objetos y el otro ayuda con el uso de la memoria. Podría utilizar potencialmente un generador para "construir" diferentes objetos de peso mosca.

2

es apropiado cuando "muchos objetos debe ser manipulado y estos no pueden permitirse tener datos extraños ". En Java, los objetos String se administran como flyweight. Java pone todos los literales de cadena fijos en un grupo literal. Para literales redundantes, Java solo conserva una copia en el grupo.

La clave para hacer que flyweight funcione es controlando la instanciación de objetos usando un método de fábrica o un patrón de diseño de constructor. El trabajo de un método de fábrica es simplemente crear objetos: dados los criterios de entrada, devuelva un objeto del tipo apropiado.

La fábrica abstracta es similar al constructor porque también puede construir objetos complejos. La principal diferencia es que el patrón de Builder se enfoca en construir un objeto complejo paso a paso. El énfasis del factor abstracto está en las familias de objetos de productos (simples o complejos).

Cuestiones relacionadas