interfaceは細かく軽く作るべきなんだろか

public interface Foo {
    public String foo();
}

public interface Bar {
    public String bar();
}

public interface Baz {
    public String baz();
}

public class FooBar implements Foo,Bar {
    //...
}

public class FooBaz implements Foo,Baz {
    //...
}

極端にやると、structural subtyping と言える?あ、引数で受けるときに

    public void hoge(Foo:Bar foobar) {
        //....
    }

とか出来ないからキツいか。
"structural subtyping"については「http://igeta.cocolog-nifty.com/blog/2008/05/subtyping.html」を参照。
どちらにしろ、java.sql.ResultSetみたいにでかく重厚に作るのは多分ダメだ。
同時に、interfaceの継承も重厚化するから避けるべき?