1

私は最近、基本的な設計原理について学ぼうとしていますが、OCPは少し混乱しています。変更が発生した場合、既存の動作中のパーツを変更するよりも、システムを拡張する方が望ましいことは理にかなっています。しかし、これは、システムを設計する方法ではなく、システムに変更を実装する方法の原則ではありませんか?基本的に、すべてのコードがサブクラス化を使用して拡張できるようになっているのではありませんか?そして、どのようにコードを変更のために閉じることができますか?それは、変更を実装する人がそれを使用することを選択する方法に依存するだけではありませんか?

おそらく、OCPに従わないコードの例と、それが原則にどれほど正確に違反しているかは、私がこれを理解するのに最も役立ちます。

ありがとう

4

1 に答える 1

0

典型的な例は、物事のタイプに分岐するロジックです。これを行うことは、新しいタイプを追加する必要があるたびに、このコードを変更する必要があることを意味します。仮想関数を使用すると、既存のコードを変更せずに、新しいタイプの新しいクラスを追加できます。

オープンクローズドプリンシパル(PDF)

そこにコード例があります。

于 2010-10-20T23:35:43.983 に答える