vendredi 17 juillet 2015

Strange interface design Java

At work I came across the following design in a java project:

Consider interfaces Foo, Bar, and Baz as follows:

interface Bar { public int a(); }

interface Baz { public int b(); }

interface Foo extends Bar, Baz { public int c(); }

Now, consider class 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;
    }
}

What are the use cases for this kind of class hierarchy? It seems to me that this introduces a lot of boilerplate and does not add much in terms of abstraction, other than breaking up what could be a large file into smaller files.

Aucun commentaire:

Enregistrer un commentaire