# 開放・閉鎖原則
OCP (Open-Closed Principle)
クラスは拡張に対して開き、修正に対して閉じていなければいけない
ソフトウェアは途中で仕様が変わるものです。その際に、機能の追加をしやすく、既存のコードに影響を与えないようにする必要があります。
仕様が変わりやすい箇所ではクラス間の依存をなくし、間にインターフェースを挟みましょう。そのインターフェースを実装したクラスを新たに作成していくことで、既存のコードに影響を与えずに機能の追加や修正を行うことができるようになります。
NOTE
クラスは拡張可能かつ、既存のコードに影響を与えないようにする
# 注意
変更が予測される箇所ではOCPを適用すべきですが、ほぼ変更されないようなクラスに対しても適用するのはYAGNIに違反します。そこで、実際に変更が発生してからOCPを適用するという方法もあります。