私はSOLIDの原則について読んでいて、依存性逆転(DI、ここでは、逆転を達成する1つの方法である依存性注入と区別する)がOpen-Closedの拡張であることを読みました。原則(OCP):OCPが基本的に元のコードに手を加えることなくクラスを拡張可能にすることである場合、それは正確にどういう意味ですか。
DIPでは、クラスが抽象化に依存している必要があります。これらの抽象的な依存関係のさまざまな実装をいつでも提供できるため、クラス自体を変更せずにクラスの動作を変更できる自然な拡張ポイントが作成されます。
もちろん、これはまさにOCPに必要なものです。
たとえば、構築中にインターフェースTaxReporter
のインスタンスを必要とするITaxCalculator
があるとします。 ITaxCalculator
の別の実装を提供することで、TaxReporter
クラスを変更せずにレポートを生成する方法を変更しました。
OCPを実現する方法は継承だけではありません。