¿El uso de ObservableList en JavaFX va en contra de la separación Modelo-Vista-Controlador?

Estoy intentando estudiar JavaFX porque quiero usarlo como la GUI de mi programa. Mi pregunta es esencialmente conceptual:

Hasta la fecha, mi programa es principalmente la parte "Modelo" del patrón MVC; es decir, casi todo mi código es la representación OO de abstracciones en el sentido de clases, y todo ese código es código lógico.

Como no quiero ser el único usuario de mi programa, quiero agregar la parte "Ver" de MVC para que las personas puedan usar y manipular fácilmente la parte "Modelo" de mi programa. Para esto, quiero usar JavaFX.

En mis clases de "Modelo" obviamente uso varias Listas, Mapas y otras clases de la API de Colecciones de Java. Para permitir que los usuarios de mi programa manipulen estas Listas y Mapas subyacentes, quiero usar las interfaces Observable (Lista / Mapa) en JavaFX.

Un ejemplo concreto para aclarar la situación:

Digamos que tengo unMonitor de máquina clase que cada 3 minutos verifica ciertas propiedades de una máquina, como si la conexión sigue siendo buena, la velocidad en que giran los engranajes, etc. Si se cumplen ciertas desigualdades (digamos que la velocidad de los engranajes ha caído a una velocidad de 1 turno / seg) elMonitor de máquina activa un evento RestartMachineEvent.

Actualmente uso una ArrayList <Monitor de máquina> para realizar un seguimiento de todos los individuosMonitor de máquina's. Ahora extendiéndome a la parte "Ver" de MVC, quiero que el Usuario pueda manipular una TableView que muestre la lista deMonitor de máquinas para que puedan, por ejemplo, crear y eliminar nuevosMonitor de máquina's para monitorear varias máquinas.

Para poder hacer un seguimiento de lo que el usuario de mi programa quiere hacer (por ejemplo, crear unMonitor de máquina para la Máquina # 5 que verifica si el giro / seg de los engranajes cae por debajo de 0.5) Uso una Lista Observable <Monitor de máquina> como la lista subyacente para TableView.

La forma más fácil de vincular el "Modelo" y la "Vista" de mi programa sería simplemente cambiar la clase "Modelo" para tener una Lista Observable <Monitor de máquina> y no una ArrayList <Monitor de máquina> pero (llegando al tema de la pregunta) Siento que esto es muy complicado porque combina el código "Modelo" y "Ver".

Un enfoque ingenuo sería usar una ObservableList <Monitor de máquina> para TableView y retener el uso de mi ArrayList <Monitor de máquina>. Sin embargo, los cambios realizados en ObservableList <Monitor de máquina> no afecta la lista subyacente según las especificaciones JavaFX.

Dado esto, es la mejor manera de resolver este enigma para hacer un ChangeListener para ObservableList <Monitor de máquina> que "propaga" los cambios realizados en ObservableList <Monitor de máquina> a la ArrayList "Modelo" subyacente <Monitor de máquina>? ¿Quizás poner esto en una clase llamada MachineMonitorController?

Esta solución ad-hoc parece muy desordenada y no ideal.

Mi pregunta es: ¿Cuál es la mejor manera de mantener una separación casi completa entre el "Modelo" y la "Vista" en este escenario?

Respuestas a la pregunta(2)

Su respuesta a la pregunta