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つにしてます)。今作っているアプリも怪しげなところがあるので、再チェックしないと・・・