Capítulo 2 Creación y destrucción de objetos
Elemento 1: use métodos de fábrica estáticos en lugar de constructores
Cinco ventajas de los métodos de fábrica estática:
- tienen nombres;
- No es necesario crear un nuevo objeto cada vez que se llaman;
- Se puede devolver cualquier objeto de subtipo del tipo de devolución original;
- La clase del objeto devuelto puede cambiar con cada llamada, dependiendo de los valores de los parámetros del método de fábrica estático;
- La clase del objeto devuelto por el método puede no existir al escribir la clase que contiene el método de ingeniería Jingtai; (
se forma el marco del proveedor de servicios y hay tres componentes importantes en el marco del proveedor de servicios: Interfaz de servicio (Interfaz de servicio) Interfaz) , API de registro de proveedores (API de registro de proveedores), API de acceso al servicio (API de acceso al servicio))
Dos desventajas principales de los métodos de fábrica estáticos:
- Una clase no puede subclasificarse si no tiene un constructor público o protegido;
- Es difícil para los programadores encontrarlos;
enumere algunos nombres habituales de métodos de fábrica estáticos:
from - método de conversión de tipos
de - método de agregación
valueOf
instancia o getInstance
create o newInstance
getType
newType
type
Elemento 2: Considere usar un constructor cuando tenga múltiples argumentos de constructor
Builder模式灵活,使构造器动态化(模拟了具名的可选参数)
Builder模式可能存在性能问题
Elemento 3: Hacer cumplir las propiedades de Singleton con constructores privados o tipos de enumeración
Elemento 4: Aplicar capacidades no instanciables con constructores privados
public class UtilityClass{
private UtilityClass{
throw new AssertionError(); //保证该类在任何情况下都不可以被实例化
}
}
Elemento 5: Priorizar la inyección de dependencia a los recursos de referencia
Ítem 6: Evite crear objetos innecesarios
Para los objetos que proporcionan una fábrica estática y un constructor, se prefiere la fábrica estática. El constructor creará el objeto varias veces, y el objeto creado por la fábrica estática se puede reutilizar (cuando no es necesario cambiar el contenido del objeto).
Ítem 7: Eliminar referencias de objetos caducados
Tres situaciones que conducen a fugas de memoria:
1. Los objetos extraídos de la pila no se tratarán como recolección de basura, porque estas referencias caducadas se mantienen dentro de la pila: una vez que no se usan, simplemente borre los objetos 2. El caché es
fácil para ser olvidado: use WeakHashMap En lugar de almacenar en caché, el caché debe
borrar regularmente los elementos inútiles (LinkedHashMap); sus referencias débiles (weakreference ), por ejemplo, solo las guarda como claves en WeakHashMap;