今日の役に立たない一言 - Today’s Trifle! -

古い記事ではさまざまなテーマを書いていますが、2007年以降はプログラミング関連の話がほとんどです。

DIPに反するコード

継承を使ったクラスで、初心者にありがちな、DIP(Dependency Inversion Principle:依存関係逆転の原則)に反するコードを見つけたので紹介。
以下の継承関係を持ったクラスがあるとする。

public class Foo {
}

public class FooEx extends Foo {
}

このとき、Foo クラスにこんなコードが書かれてたり。。。

public class Foo {
      :
    void someMethod() {
        Foo foo = getFoo();
        if (foo instanceof FooEx) {
            :
        }
    }
}

Foo クラスが FooEx クラスに依存しちゃってるし。サブクラスが存在しないとコンパイルできないってどういうことよ。