6

Java 8 引入了接口默认实现的概念?这不违反开放封闭原则吗,因为基于https://docs.oracle.com/javase/tutorial/java/IandI/defaultmethods.html上的示例,您似乎可以随时打开界面以添加新功能?

4

2 回答 2

0

面向对象的软件构建(Meyer, Bertrand 1988)中介绍了开闭原则:

“软件实体(类、模块、函数等)应该对扩展开放,对修改关闭”。

它在任何时候都说需要一个显式接口(实际上不是)。此外,它明确表示这也适用于函数,甚至整个模块。

面向对象的代码可能违反这一原则……与否,与它所采用的句法结构无关。某些特定的构造“邀请”OCP 违规可能是真的,但如果我们处理这种精细的线程,抽象类将落入同一个桶中。

于 2021-01-24T21:30:08.447 回答
0

软件可以使用接口的默认方法编写,同时遵守开闭原则,也可以使用接口的默认方法,违反开闭原则。

Open-Closed 原则是一种设计/架构原则,由程序员在设计和编程时遵循该原则。Java 语言无法强制使用它。

由于 Java 语言不强制执行 Open Closed 原则,因此可以使用 JDK 1.0(Java 的第一个版本)和仅 JDK 1.0 语言集编写一组违反或遵守 Open-Closed 原则的类特征。在接口中使用接口默认方法或 Java 的任何最新特性时,也可能违反或遵守该原则。遵守开闭原则取决于写什么以及如何写。Java 只是一种你需要用来表达概念的语言。

于 2020-07-11T12:02:47.947 回答