SeasarやSpring などのDIコンテナを使っていなくてもDIの考え方は有効です。
例えば、
public void calclateSalary(){ List<Emp> empList = dao.getEmp("本社"); for (Emp emp : empList) { if (emp.getLevel(10)){ 〜なんだかかんだか〜 } else if (〜){ 〜ああだこうだ〜 } } }
というようにオブジェクトを「取りに来る」ところとオブジェクトを「取り扱う」ところが一体となっているよりも、
public void calclateSalary(){ List<Emp> empList = dao.getEmp("本社"); for (Emp emp : empList) { calclateSalary(emp); } } void calclateSalary(Emp emp){ if (emp.getLevel(10)){ 〜なんだかかんだか〜 } else (〜){ 〜ああだこうだ〜 } }
というようにオブジェクトを取りに来るところとオブジェクトを取り扱うところを分けた方が、xUnit等のテストのやりやすさ(testability)を考えたときに望ましいとされています*1。