Modules dependent on other modules shouldn't make `Logical` assumptions about the other module; they should be explicitly asked for in code.
public class HourlyReporter {
private HourlyReportFormatter formatter;
private final int PAGE_SIZE=55;
public void generateReport(employees) {
for (HourlyEmployee e : employees) {
addLineItemToPage(e);
if(page.size() == PAGE_SIZE) {
printAndClearItemList();
}
}
}
The HourlyReporter assumes that the PAGE_SIZE is 55. This should be the formatterś concern, not the managerś. The HourlyReporter is making a logical assumption that should be the job of the formatter's instead, which should contain a method getMaxPageSize() for the HourlyReporter to use.