【发布时间】:2015-10-07 20:38:26
【问题描述】:
在工作中,我在一个java项目中遇到了如下设计:
考虑接口Foo、Bar和Baz如下:
interface Bar { public int a(); }
interface Baz { public int b(); }
interface Foo extends Bar, Baz { public int c(); }
现在,考虑类FooImpl:
public class FooImpl implements Foo {
private Bar bar;
private Baz baz;
public int a() {
return bar.a();
}
public int b() {
return baz.b();
}
public int c() {
return 0;
}
}
这种类层次结构的用例是什么?在我看来,这引入了很多样板文件并且在抽象方面并没有增加太多,除了将可能是大文件的文件分解成更小的文件。
【问题讨论】:
-
取决于接口的具体语义及其作者。基本上 Foo 建立在 Bar 和 Baz 上(适用于 Bar 或 Baz 的代码也适用于 Foo)。 FooImpl 实现了一个这样的 Foo。这种设计是否有意义取决于在这些接口的消费者中实际使用 Bar、Baz 和 Foo。
标签: java inheritance design-patterns