¿Cómo implementar el patrón MVC en Java correctamente? -- java campo con class campo con user-interface campo con model-view-controller campo con interface camp Relacionados El problema

How to implement MVC-Pattern in Java correctly?


0
vote

problema

Español

Digamos que tenemos en las clases laterales que se ocupan solo con las cosas de la GUI (por ejemplo, el swing de Java) y en las otras clases laterales que almacenan los datos. Estos datos se pueden persistir en tablas de una base de datos externa, mientras que estas tablas deben ser creadas y manipuladas por clases de Java (Hibernate, JDBC).

Entonces, nuestro software de ejemplo se ve así:

ingrese la descripción de la imagen aquí

¡Mi pregunta es ahora cómo implementar el vínculo entre estos dos módulos? ¿Debo escribir una interfaz que implementa una clase que contiene todos los métodos que se necesitan para la comunicación entre ellos?

¿O es suficiente suficiente para crear una instancia de las clases de datos en las clases de GUI con new y para usar los métodos públicos de las clases de datos?

Original en ingles

Let's say we have on one side classes which deal only with GUI stuff (e.g. Java Swing) and on the other side classes which stores the data. This data can be persisted in tables of an external database whereas these tables should be created and manipulated by Java Classes (Hibernate,JDBC).

So our example software looks like this:

enter image description here

My question is now how to implement the link between these two modules? Should I write an interface which implements an class which contains all methods which are needed for communication between them?

Or is it absolute sufficient to instantiate the data-classes in the gui-classes with new and to use the public methods of the data-classes?

              
 
 

Lista de respuestas

1
 
vote
vote
La mejor respuesta
 

Aquí un fragmento del libro de Martin Fowler Patrones de la arquitectura de la aplicación empresarial ,

Un punto clave en esta separación es la dirección de las dependencias: La presentación depende del modelo, pero el modelo no depende de la presentación. La programación de personas en el modelo debe ser enteramente. Desconocido de qué se está utilizando la presentación, que ambos simplifican Su tarea y hace que sea más fácil agregar nuevas presentaciones más adelante. Eso También significa que los cambios de presentación se pueden hacer libremente sin alterando el modelo.

, así que creo que deberías crear métodos comerciales que no sepa quién accederá a ellos.

La otra clase (controlador) sabe cómo llamar a los métodos comerciales de los datos recibidos desde la vista.

ingrese la descripción de la imagen aquí

 

Here a fragment of Martin Fowler's book Patterns of Enterprise Application Architecture,

A key point in this separation is the direction of the dependencies: the presentation depends on the model but the model doesn't depend on the presentation. People programming in the model should be entirely unaware of what presentation is being used, which both simplifies their task and makes it easier to add new presentations later on. It also means that presentation changes can be made freely without altering the model.

So I think you should create Business methods that don't know who will access them.

The other class (Controller) knows how to call the business methods from the data received from the view.

enter image description here

 
 

Relacionados problema

1  Atributos personalizados en las interfaces o las clases que las implementan?  ( Custom attributes on interfaces or the classes that implement them ) 
Al emplear atributos personalizados para almacenar meta-datos, ¿es mejor decorar la interfaz, o la clase que implementa la interfaz, suponiendo que cualquier ...

306  Método de paso de Java como parámetro  ( Java pass method as parameter ) 
Estoy buscando una forma de pasar un método por referencia. Sin embargo, entiendo que Java no pasa los métodos como parámetros, me gustaría obtener una altern...

13  ¿En qué espacio de nombres deberías poner interfaces en relación con sus implementadores?  ( In what namespace should you put interfaces relative to their implementors ) 
Específicamente, cuando crea un par de interfaz / implementador, y no existe una preocupación organizativa primordial (como la interfaz, debe ir en un ensambl...

4  Delphi rtti no se puede encontrar la interfaz  ( Delphi rtti unable to find interface ) 
Estoy tratando de buscar una interfaz utilizando D2010 RTTI. program rtti_sb_1; {$APPTYPE CONSOLE} {$M+} uses SysUtils, Rtti, mynamespace in 'mynames...

31  ¿Por qué los nombres de interfaz del prefijo C # con un "i"  ( Why prefix c sharp interface names with an i ) 
¿Cuál es la razón detrás de esta convención de nombramiento? No veo ningún beneficio. El prefijo adicional solo contamina la API. Mi Pensamiento está en l...

3  ¿Se puede requerir múltiples tipos a la vez?  ( Can you require multiple types at once ) 
Básicamente quiero hacer esto: public interface A { void a(); } public interface B { void b(); } public class SomeClass { public SomeClass(<A&B...

92  ¿Por qué no hay métodos estáticos en las interfaces, pero los campos estáticos y las clases internas están bien? [Pre-java8] [duplicado]  ( Why no static methods in interfaces but static fields and inner classes ok pr ) 
Esta pregunta ya tiene respuestas aquí : ¿Por qué no puedo definir un método estático en un Java? ¿I...

2  Problemas de jabón PHP con respuesta  ( Php soap problems with response ) 
Desde hace unos días, estoy experimentando problemas con mi interfaz de búsqueda de SOAP SOAT (Extensión SOAP EXTENSIÓN PHP, NO NUSOAP) al Servicio de Literat...

6  Mejor usar una lista de pares, o dos listas?  ( Better to use a list of pairs or two lists ) 
Estoy escribiendo un método que forma parte de la interfaz pública de una clase Java. En general, la persona que llama especifique los valores para asignar a ...

29  Interfaces en Java: No se pueden realizar métodos implementados protegidos o privados  ( Interfaces in java cannot make implemented methods protected or private ) 
Sé que una interfaz debe ser pública. Sin embargo, no quiero eso. Quiero que mis métodos implementados solo sean accesibles desde su propio paquete, por lo ...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos