-1

クラスにいくつかのメソッドを実装するために、2 つの異なる方法を考え出しました。

class Zoo {

    public void addTiger(Tiger tiger);
    public void addEmu(Emu emu);
    // ...
}

class Zoo {

    public void add(Tiger tiger);
    public void add(Emu emu);
}

私が見ることができる2つの唯一の違いは冗長性ですが、もっと基本的なものが欠けていますか? 1 つのアプローチが将来、何かをより困難にするでしょうか?

4

3 に答える 3

4

Tiger を追加することと Emu を追加することの違いは何ですか? アニマルインターフェースを作ってみませんか?

私は次のようなことをします:

class Tiger implements Animal { }

class Emu implements Animal { }

class Zoo {
    void add(Animal animal) { }
}

Zoo zoo = new Zoo();
zoo.add(new Tiger());
zoo.add(new Emu());

しかし、あなたの2つのアプローチに大きな違いはありません.SOLIDの原則に違反しているため、どちらも同じように正しいか間違っています.

于 2013-04-21T18:11:46.363 に答える
1

将来、Emu と Tiger の両方に同じインターフェイスを実装するか、同じクラスを拡張することでマージすることにした場合、次のようにして 2 つのメソッドをマージします。

class Zoo {

    public void add(Tiger tiger);
    public void add(Emu emu);
}

メソッドを使用する場所で何も変更する必要がないため、作業が楽になります。
そうです、最初のアプローチは、将来的に何かをより困難にする可能性があります.

于 2013-04-21T18:19:22.150 に答える