0

なぜこれが本当なのか知りたかった:

インターフェイスにメソッドを追加すると、その実装がすべて壊れます... ??? ... インターフェイスが出荷されると、そのインターフェイスを使用するコードを壊さずに変更する機会はありません。...

多くのフォーラムの議論でこのようなものに出くわしましたが、どのように説明していません..

インターフェイス(IMyInterfaceなど)にメソッドを追加し、このインターフェイスを実装するクラス/クラスにメソッドの機能を追加すると、コードがどのように壊れますか? .. シンプルです!...ではない?.. (インターフェイスにメソッド シグネチャを追加し、それらをクラスに実装する) ..... 機能を拡張するためにクラスにメソッドを追加すると、コードが更新されるのと同じように。もちろん、問題を設計するときのクラスとインターフェースの目的は異なります。

4

1 に答える 1

2

インターフェイスと実装の両方を提供し、コードが完全にアプリケーションの内部にある場合、問題はほとんど理論的なものです。自分の dll でインターフェイスを提供し、他の誰かがその dll で実装を提供すると、問題が現実になります。これが発生する例としては、プラグイン システムまたはデバイス ドライバーが挙げられます。

2 つの dll は、プログラムの起動時に実行時にリンクされます。新しいバージョンの dll でインターフェイスを更新した場合、古いバージョンの実装 dll にコンパイルされたクラスはそのインターフェイスに対して有効ではなくなり、プログラムは起動に失敗します。その後、ユーザーは、実装 dll (別のサプライヤーから提供されている可能性があります) が更新されて新しいバージョンが反映されるまで、古いバージョンにロックされます。

于 2012-06-03T13:03:44.377 に答える