Circa un terzo del mio codice è racchiuso all'interno di una classe Facade. Nota che questa non è una classe "Dio", ma in realtà rappresenta una singola cosa (chiamata Line
). Naturalmente, delega le responsabilità al sottosistema dietro di esso.
Quello che succede è che due delle classi del sottosistema ( Output
e Timeline
) hanno tutti i loro metodi duplicati nella classe Line
, che effettivamente rende Line
sia un Output
che un% codice%. Sembra ragionevole creare interfacce di Timeline
e Output
, in modo che la classe Timeline
possa implementarle entrambe. Allo stesso tempo, sono preoccupato di creare strutture parallele di classe e di interfaccia.
Vedete, ci sono diversi tipi di linee Line
, AudioLine
, che usano tutti lo stesso tipo di VideoLine
, ma diversi tipi di Timeline
( Output
e AudioOutput
, rispettivamente). Questo significherebbe che dovrei creare anche VideoOutput
e AudioOutputInterface
. Quindi non solo dovrei avere una gerarchia di classi parallele, ma ci sarebbe anche una gerarchia di interfaccia parallela.
C'è qualche soluzione a questo difetto di progettazione?
Ecco un'immagine della struttura di base (meno la classe Timeline, benché sappia che ogni linea ha una linea temporale):
NOTA:misonoappenaresocontochelaparola"linea" in VideoOutputInterface
potrebbe essere simile a quella di una funzione simile alla classe Timeline
. Non lo fanno, solo per chiarire.