特定のソフトウェアの拡張機能を書いています。この拡張機能は、多くのフックを使用して、このソフトウェアに機能を追加します。問題のソフトウェアは全体的にグローバル状態を使用しており、多くの場合、依存関係が引き込まれているだけでなく、静的メソッド呼び出しを使用した緊密な結合もあります。フックハンドラーによって呼び出されるコードでは、このソフトウェアのコンポーネントが必要になることが多いため、それらを取り込む以外に選択肢はないようです。これらのフックはすべてまったく異なり、アプリの処理のさまざまなステップで、さまざまな方法で渡されます。拡張コードにさまざまな処理コンポーネントが含まれています。これは基本的に、私の拡張機能にエントリポイントが散らかっていて、メインのエントリポイントでアプリケーションオブジェクトを作成し、そこから依存性注入を行うことを除外していることを意味します。そのような場合に可能な限りSOLIDコードを使用するためにどのようなアプローチを取るべきかについての推奨事項はありますか?