¿Son las jerarquías de herencia paralelas realmente un olor de código?

No puedo averiguar cómo evitar jerarquías paralelas en la práctica. p.ej. Considere una aplicación que tiene que crear / guardar / editar notas en diferentes niveles, es una aplicación basada en Java Swing.

Jerarquía de dominio:

AbstractNote < MonthNote
             < DayNote
             < ProductNote

solo lectura Jerarquía de vistas (se muestra en JTabPane, cada una con JTable para mostrar los detalles de las notas específicas)

AbstractNotePanel < MonthNotePanel
                  < DayNotePanel
                  < ProductNotePanel

jerarquía del editor de notas (se muestra cuando el usuario hace clic en una nota en particular en una fila de la tabla).

AbstractNoteEditorDialog  < MonthNoteEditorDialog
                          < DayNoteEditorDialog
                          < ProductNoteEditorDialog  

Leí una forma de evitar esto es usar el patrón de visitante.aquí Pero esto no parece ser aplicable a mi situación.

Estoy muy contento con mi diseño anterior ya que la mayoría del código común está en la clase abstracta (aplicando el patrón del método de plantilla allí). En caso de que tenga que crear un nuevo tipo de nota, p. Ej. YearNote luego tengo que crear YearNotePanel y YearNoteEditorDialog en paralelo, lo cual es bastante aceptable para mí porque no tengo que codificar mucho debido a las plantillas. Por encima de todo quiero evitar el olor a código en mi diseño. Por favor, sugiérame un diseño alternativo en el escenario anterior para que mi código aún sea modular. Gracias

Respuestas a la pregunta(2)

Su respuesta a la pregunta