这种设计模式有什么好处?

时间:2014-01-23 18:08:22

标签: java oop design-patterns

interface Base<T extends Base> {

    T method();
}

反对这种模式设计

interface Base {

    Base method();
}

唯一的,我想,method() Base我可以获得特定的类型。 还有更多好处吗?

3 个答案:

答案 0 :(得分:9)

你只需保存一个演员。这是一个例子:

class A implements Base<A> {
    ...
}


A a = ...;
A b = a.method();

VS

class A implements Base {
    ...
}


A a = ...;
A b = (A)a.method();

你也可以在整个地方使用T参数进行构建。例如,考虑接受T作为参数或定义类型T的局部变量。

答案 1 :(得分:0)

我能注意到的唯一区别是方法可以是T类或任何继承的类。

答案 2 :(得分:0)

实际上很清楚。在第二种情况下,可以返回任何subclass Base2。在第一种情况下,没有这种模糊性。