迪米特法则的核心是降低类之间的耦合 , 最少知道原则
import java.util.ArrayList;
import java.util.List;
public class Demeter1 {
public static void main(String[] args){
SchoolManager schoolManager = new SchoolManager();
schoolManager.printAllEmployee(new CollegeManager());
}
}
// 学校总部员工
class Employee{
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
//学院总部员工
class CollegeEmployee{
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
// 管理学院员工的管理类
class CollegeManager{
public List<CollegeEmployee> getAllEmployee(){
List<CollegeEmployee> list = new ArrayList<CollegeEmployee>();
for(int i=0;i<10;i++){
CollegeEmployee emp = new CollegeEmployee();
emp.setId("学院员工id="+i);
list.add(emp);
}
return list;
}
}
// 分析SchoolManager, 类的直接朋友有哪些 Employee, CollegeManager
// CollegeEmployee不是直接朋友,这样违背了迪米特法则
class SchoolManager{
public List<Employee> getAllEmployee(){
List<Employee> list = new ArrayList<Employee>();
for(int i=0;i<5;i++){
Employee emp = new Employee();
emp.setId("学校总部员工id="+i);
list.add(emp);
}
return list;
}
void printAllEmployee(CollegeManager sub){
// CollegeEmployee不是直接朋友,应该调整这部分代码
List<CollegeEmployee> list1 = sub.getAllEmployee();
System.out.println("------学院员工-----");
for(CollegeEmployee e : list1){
System.out.println(e.getId());
}
List<Employee> list2 = this.getAllEmployee();
System.out.println("------学校总部员工-----");
for(Employee e : list2){
System.out.println(e.getId());
}
}
}
改进版
import java.util.ArrayList;
import java.util.List;
public class Demeter1 {
public static void main(String[] args){
SchoolManager schoolManager = new SchoolManager();
schoolManager.printAllEmployee(new CollegeManager());
}
}
// 学校总部员工
class Employee{
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
//学院总部员工
class CollegeEmployee{
private String id;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
}
// 管理学院员工的管理类
class CollegeManager{
public List<CollegeEmployee> getAllEmployee(){
List<CollegeEmployee> list = new ArrayList<CollegeEmployee>();
for(int i=0;i<10;i++){
CollegeEmployee emp = new CollegeEmployee();
emp.setId("学院员工id="+i);
list.add(emp);
}
return list;
}
public void printAllEmployee(){
// CollegeEmployee不是直接朋友,应该调整这部分代码
List<CollegeEmployee> list1 = getAllEmployee();
System.out.println("------学院员工-----");
for(CollegeEmployee e : list1){
System.out.println(e.getId());
}
}
}
// 分析SchoolManager, 类的直接朋友有哪些 Employee, CollegeManager
// CollegeEmployee不是直接朋友,这样违背了迪米特法则
class SchoolManager{
public List<Employee> getAllEmployee(){
List<Employee> list = new ArrayList<Employee>();
for(int i=0;i<5;i++){
Employee emp = new Employee();
emp.setId("学校总部员工id="+i);
list.add(emp);
}
return list;
}
void printAllEmployee(CollegeManager sub){
sub.printAllEmployee();
List<Employee> list2 = this.getAllEmployee();
System.out.println("------学校总部员工-----");
for(Employee e : list2){
System.out.println(e.getId());
}
}
}