L'idea di un accoppiamento lento non è di rimuovere la conoscenza di altri oggetti, ma ha lo scopo di minimizzare quella conoscenza (quindi accoppiamento libero e alta coesione sono spesso discussi insieme) . Il disaccoppiamento completo di solito non viene applicato agli oggetti dominio (classi Java che contengono dati , ad esempio Studente, Automobile, Lavoro, Risultato). Il punto principale è disaccoppiare il comportamento , in modo che le diverse classi che elaborano un oggetto dominio siano indipendenti.
Un esempio: per l'oggetto dominio Student
potresti implementare un software che controlla se lo studente è idoneo a laurearsi. Ciò potrebbe comportare il controllo se ha abbastanza punti di credito e se tutte le fatture per i punti di credito sono state pagate. Sebbene entrambe le condizioni si occupino di punti di credito, per quanto riguarda l'economia, controllano condizioni molto diverse. Quindi ti piacerebbe costruire questi controlli separatamente gli uni dagli altri.
Il modo per ridurre le dipendenze dagli oggetti di dominio è tramite ereditarietà . Se, ad esempio, desideri restituire tutti Student
s che non hanno pagato le loro fatture, ma stai utilizzando un sistema generico che si applica anche a Professor
s e Contractor
s, allora li fai implementare una stessa interfaccia , per esempio %codice%. In questo modo puoi sempre restituire Student implements Payee
invece di una specifica classe.
Nel tuo esempio, crea Payee
implementa SomeObject
e restituisci un'istanza di quello.