オープン・クローズドの原則(OCP: Open-Closed Principle) オープン モジュールの振る舞いを拡張できる 仕様変更に対して、モジュールに新たな振る舞いを追加することで対処できるようにすること。 クローズド モジュールの振る舞いを拡張してもソースコードやバイナリが影響を受けない ようするに 拡張がしやすくて、拡張しても修正箇所はできるだけ少なくなるような設計にするべき、という話。 「抽象」に依存する モジュールをある固定した「抽象」に従属させておけば、修正に対してコードを閉じることができるのだ。なぜなら、「抽象」を使えば、コードを修正しなくても、その「抽象」の派生クラスを新たに追加するだけでモジュールの振る舞いを拡張できるからである。 修正するたびにバグを埋め込む機会を得ることになるので修正箇所はできるだけ少なくするべき。それを実現する方法が、抽象に対するプログラミング