定义:

一个对象应该对其他对象保持最少的了解(最少知道原则),尽量降低类与类之间的耦合.

优点:

降低类之间的耦合

代码实践:

假设 有 Admin(管理员) Assistant(助手) Book(书籍) 三个对象,管理员的getBookCount方法为调用助手查询书籍资料,一开始是这样的逻辑
代码:
/**
 * Created by 于占峰 on 2020/3/3/003.
 * 管理员
 */
public class Admin {

    public void getBookCount(Assistant assistant){
        ArrayList<Book> list = new ArrayList<>();
        for (int i = 0;i<=10;i++){
            list.add(new Book());
        }
        assistant.getBookCount(list);
    }
}

/**
 * Created by 于占峰 on 2020/3/3/003.
 * 助手
 */
public class Assistant {
    public void getBookCount(ArrayList<Book> list) {
        System.out.println("共有书籍:"+list.size());
    }
}

/**
 * Created by 于占峰 on 2020/3/3/003.
 * 书籍
 */
public class Book {
}
类图:
mark
管理员 Admin 和Book产生了没有必要的关联耦合,假设业务复杂度上升,需要额外的导包,将产生更多不必要的依赖,因此需要进行改造.
改造后的代码:
/**
 * Created by 于占峰 on 2020/3/3/003.
 * 管理员
 */
public class Admin {

    public void getBookCount(Assistant assistant){
        assistant.getBookCount();
    }
}
/**
 * Created by 于占峰 on 2020/3/3/003.
 * 助手
 */
public class Assistant {
    public void getBookCount() {
        ArrayList<Book> list = new ArrayList<>();
        for (int i = 0;i<=10;i++){
            list.add(new Book());
        }
        System.out.println("共有书籍:"+list.size());
    }
}

/**
 * Created by 于占峰 on 2020/3/3/003.
 * 书籍
 */
public class Book {
}
改造后的类图:
mark
通过改造后 将获取书籍数量的过程在Assistant中去详细实现,Admin只负责调用Assistant的方法,这样可以避免不相关的依赖和导包,符合迪米特法则.