responsabilidad de hacer una nueva instancia en la composición de objetos

Como suele ocurrir con preguntas tan amplias, la respuesta es: depende.

Si: su clase B es algo interno, que solo desea usar dentro de esa clase A, o tal vez dentro de unas pocas clases en un paquete pequeño, entonces puede ir con la opción 2.

Pero en general, la opción 1 es preferible: ya ve, si está utilizando una clase B para "modelar" algo que representa un "objeto B" ... entonces todos su código debería estar usando objetos B. El punto es: su clase B agrega una abstracción. No lo es ahora, pero podría extenderse fácilmente para que sea más que una combinación de int / string. Significado: es una mala idea que algunos de sus datos "relacionados con B" existan como verdaderos objetos B, mientras que otros podrían estar dando vueltas como "cadenas en bruto".

Finalmente: tenga en cuenta lo SÓLIDO principios ; y allí mismo, el primero (principio de responsabilidad única) le da una pista, en el sentido de: convertir una cadena cruda en una B y almacenar Bs, y así sucesivamente ... son probablemente responsabilidades diferentes; y probablemente debería ir a diferentes clases.

Respuesta 1

Creo que el nombre de la función es engañoso en el segundo caso. Debe ser algo así como: createAndAddNewBInstance. Además, el segundo enfoque hace que la Aclase dependa de la implementación de la clase B.

Si desea crear una conexión entre estas dos clases, sería más razonable crear una staticfunción en la Bclase que tome una rawDatareferencia a la Ainstancia, cree una nueva Binstancia y la agregue a Através de addB.

class B {
    static void createNewInstanceAndAddToA(String rawData, A aInstance){...}
    ...
}

De esta manera, los detalles de su implementación Bestán dentro del Balcance de la clase. También puede extraer un interfacede AconaddB para hacerlo másSOLID .

Respuesta: 2

Estoy tratando de usar un módulo de autenticación JAAS personalizado para una aplicación basada en web alojada en JBoss 5.1.0.GA. Entonces, todo parece estar funcionando bien, hasta que el número de usuarios aumenta y las sesiones (así que ...

Acabo de encontrar un comportamiento extraño que no esperaría de una ArrayList <String> en Java. Esto viene, sin duda, de mi pobre comprensión de las referencias en Java. Déjame mostrarte esto ...

Estoy aprendiendo Spring y las cosas iban bien, pero de repente me encuentro con este problema en el que no puede encontrar un bean calificado. Golpeando la pared, incluso en una nueva aplicación, obtengo esto. Dejame saber si tu ...

¿Alguien puede explicar el significado de estas constantes y por qué se eligen? static int hash (int h) {// Esta función asegura que los códigos hash que difieren solo en // constante ...