DIP

単純なクライアント、サーバーモジュールを考えた時、

Client -> Server

と呼び出します。ClientがServerの実装に依存するのはよくないのでインタフェースで分離さてたとします。

Client -> IServer <- Server

さて、ここでこれらを2つのDLLに分けるとしたら、どーするでしょうか? 私は何も考えずに、

  • Client.dll
    • class Client
  • Server.dll
    • interface IServer
    • class Server

としてしまいがちなんですが、これって

  • Client.dll
    • class Client
    • interface IServer
  • Server.dll
    • class Server

とし、Clientは、Client内で定義しているIServerにのみ依存とした方が安定します(もちろん、3つに分けてしまうのはアリですが、問題をはっきりさせるためにあえて2つにしてます)。今作っているアプリも怪しげなところがあるので、再チェックしないと・・・