依存関係と抽象化

最近の自分の日記と記事をもう少しまとめてみる。


依存関係(A←B)とは以下の2つの条件を持つものである。
1.変更性 ⇒ AはBを知らないが、BはAを知っている。すなわちAを修正するとBも修正する必要が出てくる可能性があるが、Bを修正してもAは修正の必要ない。
2.個数 ⇒ Aは1つしか存在しないが、Bは、複数存在し得る。


依存関係には、以下のものがある。
(1)「データ」←「処理」
(2)「呼ばれる側の関数」←「呼び出し側の関数」
(3)「サプライヤ」←「クライアント」 (オブジェクト)
(4)「インタフェース」←「実装」 (処理)


(4)は、最近の自分の考えに基づくものであるが、書き方を決めて、中身を決めないという、いわゆる抽象化である。


A←Bで、重要な方は、もちろんAであるが、気になるのは、抽象化って単なる、インタフェースと実装の話しかないのだろうか?もしくは、抽象化の1つの例が、(4)になるのであろうか?もう少し考えてみる必要がありそうである。