设计原则:迪米特原则

定义:一个对象应该对其他对象保持最少的了解。又叫最少知道原则
尽量降低类与类之间的耦合
优点:降低类之间的耦合
强调只和朋友交流,不和陌生人说话
朋友:出现在成员变量、方法的输入、输出参数中的类称为成员朋友类,而出现在方法体内部的类不属于朋友类。

示例

实现一个老板命令组长去查询课程数量的Demo

代码实现

  1. 创建Course类,只需要空的类
/**
 * @author lijiayin
 */
public class Course {
}
  1. 创建TeamLeader类
import java.util.List;

/**
 * @author lijiayin
 */
public class TeamLeader {
    
    public void checkNumber(List<Course> courseList){
        System.out.println("课程数量为:" + courseList.size());
    }
}
  1. 创建Boss类
import java.util.ArrayList;
import java.util.List;

/**
 * @author lijiayin
 */
public class Boss {
    public void commandCheckNumber(TeamLeader teamLeader){
        List<Course> courseList = new ArrayList<>();
        for (int i = 0; i < 20; i++) {
            courseList.add(new Course());
        }
        teamLeader.checkNumber(courseList);
    }
}
  1. 创建测试类
/**
 * @author lijiayin
 */
public class Test {

    public static void main(String[] args) {
        Boss boss = new Boss();
        TeamLeader teamLeader = new TeamLeader();
        boss.commandCheckNumber(teamLeader);
    }
}
  1. 测试结果


    测试结果.png
  2. UML图


    UML.png
  3. 存在问题
    因为TeamLeader是Boss方法的入参,所以TeamLeader是Boss的朋友,而Course不是,因此不应该出现在Boss中。

改进Demo

代码实现

  1. 修改Boss类
/**
 * @author lijiayin
 */
public class Boss {
    public void commandCheckNumber(TeamLeader teamLeader){
        teamLeader.checkNumber();
    }
}
  1. 修改TeamLeader类
import java.util.ArrayList;
import java.util.List;

/**
 * @author lijiayin
 */
public class TeamLeader {
    
    public void checkNumber(){
        List<Course> courseList = new ArrayList<>();
        for (int i = 0; i < 20; i++) {
            courseList.add(new Course());
        }
        System.out.println("课程数量为:" + courseList.size());
    }
}
  1. 测试结果


    测试结果.png
  2. UML图


    UML.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容