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.