1つのものに大量に依存することを避ける
Business Logicは根幹なので、やろうと思えば全てをここに
依存するように設計することもできる
しかし、レイヤー構造にすることで、その修正による影響の波及を軽減できる
つまり、ビジネスロジックが多くの箇所から依存されないようになる
それだけならレイヤーである必然性がない
例えばその関数を意味的にグルーピングしたwrapperを作るとか
何かしらでルールを明示しないと、利用者はどちらに依存すべきなのかの判断がつかない
まさにこの図の感じ
>

24章
設計者の意図としては、Client→ServiceBoundary→ServiceImplという上下関係を規定しているつもりでも、
Clientは、ServiceBoundaryを参照すべきか、ServiceImplを参照すべきかの判断がつかない
この例ではInterfaceとImplなので自明にわかりそうに見えるが、それぐらいの自明さがないと上下関係がわからない
しかし、ただlayerを作れば良い、というわけでもないと思う
汎用的な関数を、依存を避けるためだけにwrapperを用意するのもおかしい
同じ意味なのであれば、同じものを参照したほうが正しい
その境界が、どういう修正に対して堅牢になっているのかを理解した上でそうしないといけない