【发布时间】:2014-06-15 10:21:11
【问题描述】:
假设我有 2 个名为 class Cow 和 class Pig 的课程。
他们都实现了interface Animal。
对于interface,只有两个方法称为public void eat() 和public void speak()。
一切都很好。但是,虽然这似乎很好地利用了interfaces,但我认为如果我需要向这个interface 添加方法,实现会中断,即我需要在这些类中实现新方法,这打破了“关闭-打开原则”。
所以我想,除了interface,我也会使用abstract类,如果以后需要我需要添加新的方法。
例如,public class Cow extends ... implements Animal。
这听起来是个不错的计划(如果不是,请纠正我)。
但问题是,如果这些类extend 已经是其他类怎么办?在这种情况下,我无法扩展 2 个类。
所以我的问题是:
有没有一种模式可以让我声明一个常见的
interface相关的类,同时保留在其中添加新方法的能力 不打破“封闭开放原则”的未来 中断实现?
【问题讨论】:
-
这是 Java 8 的 default methods 试图解决的问题。
标签: java design-patterns design-principles