こんなワード聞きませんか
『このクラスは、このクラスに依存しているね』
『このクラスとこのクラス、密結合になってるな・・・』
依存って何なんでしょう。
イメージとしては、
『○○さんがいないと、私生きていけない・・・』
みたいなものが思い浮かぶと思います。
だいたいあってます。
依存しているコードの例
【例はPHPですが、依存の話は別言語でも同様のお話です】
Child.php
class Child { private $name; public function __construct(Parent $parent) { $this->name = $parent->generate_name(); } public function play_game(Friend $friend) { // } }
これは、ChildはParentに依存しています。
play_game()もFriendに依存していますね。
Friendがいないと、遊ぶことが出来ない。
Parentに名前つけてもらわないと、生まれることすら出来ない。
こんなふうに、コンストラクタやメソッドの引数に、特定のクラスがあるなどして、
そのクラスが存在しないと生きられない!
それが依存です。
相互依存の『密結合』
依存というのは一方的なものです。
『〇〇さんがいないと、私生きていけない・・・』
は片方の人が言うセリフですね。
しかし、お互いがお互いに依存している場合もあります。
それが密結合と呼ばれます。
片方バグ起こると、共倒れしてしまうやーつです。
余談
普段はプログラミングでは『疎結合』にしようとか、
極力『密結合』を避けようとしますよね。
では、『密結合』でなければ何が嬉しいの?
『〇〇さんがいないと、私生きていけない・・・』
と言われても、その〇〇さんは普通に生きていけます。
他にもバグのチェックも楽だったりと良いことがあるのですが、
それはまた次の機会に書きます。