概要は詳細に依存してはならない。詳細のインターフェースに依存する必要がある。
……ではそのインターフェースを実装した実体はどっから来るんだ?
という疑問。
・Strategyパターン 実体はコンストラクタ引数として外部から渡す。
・Observerパターン 実装をobserverオブジェクトとして外部から登録する。
・AbstructFactory パターン 実体を生成するfactoryオブジェクトをコンストラクタ引数として外部から渡す。
・FactoryMethod パターン 実体を生成するvirtualメソッドを持つ。それを継承したクラスが実体を生成する。