現在、SOLIDを把握しようとしています。したがって、依存関係反転の原則は、任意の2つのクラスが直接ではなく、インターフェースを介して通信することを意味します。例:class A
メソッドがあり、typeのオブジェクトへのポインターを予期するclass B
場合、このメソッドは実際にtypeのオブジェクトを予期する必要がありますabstract base class of B
。これは、オープン/クローズにも役立ちます。
私が正しく理解していれば、私の質問は、これをすべてのクラスの相互作用に適用するのが良い習慣であるか、レイヤーの観点から考えてみるべきですか?
私が懐疑的である理由は、この原則に従うためにいくらかの代価を払っているからです。たとえば、featureを実装する必要がありますZ
。分析後Z
、機能はA
、B
およびで構成されていると結論付けC
ます。私が作成ファサードクラスはZ
、それは、インタフェースを介して、クラスを使用していますA
、B
とC
。私は実装をコーディングを開始し、いくつかの点で私は、そのタスクを実現するZ
実際の機能で構成されA
、B
そしてD
。次に、C
インターフェイス、C
クラスプロトタイプを破棄し、D
インターフェイスとクラスを個別に記述する必要があります。インターフェイスがなければ、クラスのみを置き換える必要があります。
つまり、何かを変更するには、1。呼び出し元2.インターフェイス3.宣言4.実装を変更する必要があります。Python直接結合実装では、実装のみを変更する必要があります。