Progettazione e analisi di ingegneria
Implementare la Legge di Demeter per ridurre la dipendenza dagli oggetti nel design orientato agli oggetti
Table of Contents
La Law of Demeter è una linea guida per lo sviluppo di software, in particolare nella programmazione orientata agli oggetti, che mira a ridurre le dipendenze tra oggetti, rendendo i sistemi più modulari, più facili da mantenere e meno inclini agli insetti.
Comprendere la Legge del Demetra
La Legge di Demeter, spesso riassunta come "solo parlare con i tuoi amici immediati", incoraggia gli oggetti a comunicare solo con i loro collaboratori diretti, il che significa che un oggetto deve solo invocare metodi di:
- E' lei stessa.
- Oggetti passati come parametri
- Oggetti che crea
- I suoi oggetti di componenti diretti
Aderendo a questa regola, le dipendenze dell'oggetto sono minimizzate, riducendo il rischio di un accoppiamento stretto e rendendo il codice più facile da cambiare o estendere.
Implementare la Legge del Demetra
L'implementazione della Legge di Demeter comporta la progettazione di classi e metodi che non raggiungono profondamente i grafici degli oggetti, ad esempio invece di chiamare:
order.getCustomer().getAddress().getCity()]
È meglio fornire un metodo che restituisce le informazioni necessarie direttamente:
ordine.getCustomerCity()
Consigli di rifattore
- Incapsulare catene complesse all'interno della classe stessa.
- Creare metodi che espongono solo i dati necessari.
- Utilizzare modelli di progettazione come Facade o Mediator per ridurre le dipendenze.
- Tenere le classi incentrate su una singola responsabilità.
Vantaggi di seguito della legge del Demeter
Aderendo a questa legge offre diversi vantaggi:
- Riduce l'accoppiamento tra le classi.
- Migliora la leggibilità del codice e la manutenbilità.
- Rende più facile il test delle unità isolando gli oggetti.
- Facilita la rifattore più facile e l'estensione del codice.
In sintesi, l'implementazione della legge di Demeter nel design orientato agli oggetti promuove un codice più pulito e modulare, incoraggia gli sviluppatori a riflettere attentamente sulle interazioni e le dipendenze degli oggetti, portando a sistemi software più robusti.