処理のインターフェースと実際の処理

 処理のインターフェースを介することで、実際の処理を単体で変更できるようになる。

 もちろん実際の処理をそのままに、処理のインターフェースだけを変更することも可能。使用する側が変われば処理のインターフェースも変わる。

 DLL間の相互参照をなくすためには、処理のインターフェースと実際の処理を分ける必要がある。処理のインターフェースは他の処理のインターフェースを参照せず実際の処理も参照しない。処理のインターフェースは単体で存在する。実際の処理は他の実際の処理を参照せず、そのインターフェースだけを参照する。実際の処理同士が概念上相互参照していたとしても、処理のインターフェースは他の処理のインターフェースを参照しないので相互参照になることは無い。

 処理のインターフェースを規定するためにはデータ型が必要になる。面倒をおしまないなら、一つ一つのDLLが自分用にデータ型のインターフェースを作る。そのインターフェースは同じようなものが各コンポーネントで個別に作られる場合もある。一つのデータ型を作り複数の処理のインターフェースから参照させても別にいいが、面倒を惜しまないなら、それぞれが独立にデータ型のインターフェースを持つのが正しいのではないかと思う。実際のデータ型は個別に作られた同じようなデータ型インターフェースの全てを実装する。