2019-03-20 クリーンアーキテクチャーの読書メモ(7) 読書メモ クリーンアーキテクチャー §8 OCP: オープン・クローズドの原則 1988年 Bertrand Meyer ソフトウェアの構成要素は拡張に対しては開いていて、修正に対しては閉じていなければならない(『アジャイルソフトウェア開発の奥義』) = ソフトウェアの振る舞いは既存の成果物を変更せずに拡張できるようにすべき ソフトウェアよりコンポーネントレベルで重大なインパクトを持つ 例 よくある Controller/Service/Model/View/Infra のコンポーネント図 矢印のしっぽ側のコンポーネントが矢印の向かってる先のコンポーネントを参照(import)している View(ThymeleafView)を変更した際に、 Controller を変更しなくて良い 他のすべてを変更しても Model(BusinessModel)を変更しなくて良い Model が上位のレベルのコンポーネント レベル概念に基づいた変更からの保護階層ができていることが OCP 依存関係逆転の法則を使って、矢印の方向を制御する 矢印がすべて向かってくる BusinessModel コンポーネントが最上位レベルのコンポーネント