Hur mycket ska ett objekt känna till om andra objekt. Svaret är enkelt, desto mindre desto bättre. Anledningen är lika enkel som svaret. Om den anropande klassen känner till hur den anropade klassen löser sin uppgift blir det svårt att ändra den anropade klassen. Tänk följande scenario:
public Employee getEmployeeSalary(int idNumber){
Employee employee = Context.getInstance().getSearchService.getEmployeeById(idNumber);
return employee.getCurrentSalary();
}
I metodenovan har vi effektivt låst fast implementationen av hur Context levererar en Employee från dess Id. Om vi skulle göra en förändring av kedjan av anrop kan det bli många ställen att ändra på i koden.
Hur bör man göra då? Den trista lösningen är vi ska lägga in en metod i Context och låta Context ta beslutet för hur Employee ska levereras. Om vi nu skulle vilja flytta getEmployeeById från SearchService till EmployeeService kan vi göra det utan att en mängd beroenden också måste ändras. Det är dock inte helt oproblematiskt att göra på detta sätt. Vi riskerar ett scenario där vi översvämmar Context-klassen med ett stort antal metoder.
torsdag 1 januari 2009
Prenumerera på:
Kommentarer till inlägget (Atom)
Inga kommentarer:
Skicka en kommentar