Har*_*eet 6 java solid-principles default-method interface-segregation-principle
根据接口隔离原则
不应该强迫客户端实现不需要的接口方法
...因此我们应该定义接口以进行逻辑分离。
但是defaultJava 8 中引入的方法提供了在 Java 接口中实现方法的灵活性。似乎 Java 8 提供了增强接口的可行性,使其具有一些与其核心逻辑无关的方法,但具有一些默认或空的实现。
它不违反ISP吗?
好问题。当然,它违反了接口隔离原则,而且我个人不喜欢默认实现的概念,因为它破坏了接口设计的美感,并且也破坏了精确的多态性。如果有人不了解 ISP 的概念,那么他们就会开始设计胖接口,最终会像所有东西都封装在一个接口中一样。在代码设计的时候,人们也不会进行逻辑思考。
这最终会产生代码异味,我相信那些不了解这些概念的人会开始编写糟糕的代码。我相信默认实现是一个不需要的功能,因为它会导致人们编写有臭味的代码。