Sólo una clase puede crear una instancia de todas las otras clases

Nenad Bulatovic:

¿Cuál es la mejor práctica para restringir la instanciación de las clases a una sola clase? Algo como esto , pero en Java.

Digamos que es la clase principal, entonces hay de usuario Admin, Vista, datos, etc. cliente clases. Sólo la clase 'principal' debe ser capaz de crear una instancia de todas las demás clases.

Así que si es necesario 'Usuario' al llamado método 'getUser' en la clase 'Datos', que puede método de la clase y la llamada no instantiate 'Datos', pero tiene que llamar a la clase 'principal', y luego 'principal' será una instancia de 'Datos 'clase y pasar argumentos a su 'método getUser'.

Lo que estoy pensando es el uso de constructor privado, patrón de la fábrica, etc., pero no estoy seguro si esto se traducirá en lo que necesito. Debido a la complejidad no creo que las clases internas serían buena solución.

Cualquier consejo sobre esto?

GhostCat saludos Monica C.:

Una respuesta distinta en el plano conceptual (puesto que ya hay buenas respuestas en la técnica "cómo hacerlo"):

Digamos que es la clase principal, entonces hay de usuario Admin, Vista, datos, etc. cliente clases. Sólo la clase 'principal' debe ser capaz de crear una instancia de todas las demás clases.

No creo que este es un buen punto de partida. Por supuesto, cuando se sigue Design Driven dominio, usando fábricas está bien establecida.

Pero hay un punto sutil para agregar: todavía quiere cortar sus "límites" de forma apropiada. Significado: No fuerce todos los objetos en una sola fábrica. Sus objetos de alguna manera deben parecerse a sus dominios, y estar separados cuando sea necesario.

Significado: el uso de las fábricas está bien, pero no se fuerce a la esquina equivocada mediante la aplicación que no es exactamente una fábrica que se supone para manejar todo tipo de objetos que tratar. En su lugar: intentar razonablemente particionar el modelo de objetos, y tener tantas fábricas, ya que hace conceptualmente sentido tener.

También tenga en cuenta que probablemente debería distinguir entre objetos que principalmente proporcionan datos / información, y "comportamiento" en el extremo. Por lo tanto puede ser que sea digno de mirar en la idea de tener un registro de servicios (por ejemplo, lo que haces con el marco de Eureka Netflix, ver aquí ).

Y, por último, para citar un excelente comentario dado por tucuxi aquí: Para aplicaciones pequeñas, las fábricas están sobre-ingeniería. Para aplicaciones más grandes, me resulta cuestionable que tiene una única fábrica llamada "principal", en lugar de dividir las responsabilidades de una manera más ortodoxa.

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=202410&siteId=1
Recomendado
Clasificación