Según Effective Java 2ed artículo 2Refactor utilizar Builder o patrón constructor telescópica
telescópico patrón constructor, en que proporcione un constructor con sólo los parámetros requeridos, otra con un solo parámetro opcional, un en tercer lugar con dos parámetros opcionales, y así sucesivamente, que culmina en un constructor con todos los parámetros opcionales .
Un ejemplo de constructores de la clase aplicando este patrón es prestado desde el código When would you use the Builder Pattern?
conjunto 1a
Pizza(int size) { ... }
Pizza(int size, boolean cheese) { ... }
Pizza(int size, boolean cheese, boolean pepperoni) { ... }
Pizza(int size, boolean cheese, boolean pepperoni, boolean bacon) { ... }
tamaño es un parámetro requerido. queso, salchichón y tocino son parámetros opcionales. Supongamos que me gustaría proporcionar el constructor como a continuación.
conjunto de códigos 1b
Pizza(int size) { ... }
Pizza(int size, boolean cheese) { ... }
Pizza(int size, boolean pepperoni) { ... }
Pizza(int size, boolean cheese, boolean pepperoni, boolean bacon, int price, int) { ... }
Otro ejemplo es que
conjunto de códigos 2
public AttributeKey(String key, Class<T> clazz)
public AttributeKey(String key, Class<T> clazz)
public AttributeKey(String key, Class<T> clazz, @Nullable T defaultValue, boolean isNullValueAllowed)
public AttributeKey(String key, Class<T> clazz, @Nullable T defaultValue, boolean isNullValueAllowed, @Nullable ResourceBundleUtil labels)
El dos último ejemplo di no seguir el característica ic de telescópico constructor como conjunto de códigos 1a hizo
- son el código conjunto 1b y 2 incluyen en telescópico constructor? si no, ¿cómo se llama?
- En comparación con el uso de Builder, cuál (entre el constructor y el patrón de juego de códigos 1a, 2) proporciona más beneficios
tanto 1b como 2 dan errores en tiempo de compilación, porque tienen dos constructores con firmas idénticas. – Superole
La otra respuesta http://stackoverflow.com/a/1953567/632951 dará más información ... – Pacerier