Skip to content

Instantly share code, notes, and snippets.

@pawelpluta

pawelpluta/Company.java Secret

Created Dec 20, 2020
Embed
What would you like to do?
Article: Law of Demeter - company using internal methods
class Company {
private List<Department> departments;
Map<DepartmentCode, BigDecimal> costPerDepartment() {
Map<DepartmentCode, BigDecimal> costPerDepartment = new HashMap<>();
departments.forEach(department -> {
DepartmentCode departmentCode = department.getCode();
BigDecimal employeesCost = calculateCostOf(department);
costPerDepartment.put(departmentCode, employeesCost);
});
return costPerDepartment;
}
private BigDecimal calculateCostOf(Department department) {
return department.getTeams().stream()
.map(team -> calculateCostOf(team))
.reduce(BigDecimal.ZERO, BigDecimal::add);
}
private BigDecimal calculateCostOf(Team team) {
return team.getMembers().stream()
.map(Member::getCost)
.reduce(BigDecimal.ZERO, BigDecimal::add);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment