Considera questo esempio:
Ho un sito web. Consente agli utenti di pubblicare post (può essere qualsiasi cosa) e aggiungere tag che descrivono il post. Nel codice, ho due classi che rappresentano il post e i tag. Chiamiamo queste classi Post
e Tag
.
Post
si occupa di creare post, eliminare post, aggiornare post, ecc.
Tag
si occupa di creare tag, eliminare tag, aggiornare tag, ecc.
Manca un'operazione. Il collegamento di tag ai post. Sto lottando con chi dovrebbe fare questa operazione. Potrebbe adattarsi ugualmente bene in entrambe le classi.
Da un lato, la Post
classe potrebbe avere una funzione che accetta un Tag
come parametro e quindi lo memorizza in un elenco di tag. D'altra parte, la Tag
classe potrebbe avere una funzione che accetta Post
un parametro come e lo collega Tag
al Post
.
Quanto sopra è solo un esempio del mio problema. In realtà sto incontrando questo con più classi che sono tutte simili. Potrebbe adattarsi ugualmente bene in entrambi. A meno di mettere effettivamente la funzionalità in entrambe le classi, quali convenzioni o stili di progettazione esistono per aiutarmi a risolvere questo problema. Suppongo che ci debba essere qualcosa di meno che sceglierne uno?
Forse metterlo in entrambe le classi è la risposta corretta?