バッドプラクティスから学ぶ オープン・クローズドの原則 による柔軟なシステム設計
discount
メソッドを毎回変更する必要があります。discount
メソッドを変更する必要がありません。send
メソッドの修正が必要であり、OCPに反していました。修正後はSenderという抽象クラスを作成し、各通知タイプをサブクラスとして定義することで、新しい通知タイプを追加する際に既存コードを変更する必要がなくなりました。
process
メソッドを修正する必要があり、OCP違反でした。修正後は各支払い方法をサブクラス化して抽象化することで、新たな支払い方法を簡単に追加でき、既存のコードを変更する必要がなくなりました。これにより、拡張性が向上しました。