以下のクラス ダイアグラムでは、プラグイン/拡張システムの現在のアプローチを確認できます。拡張機能に、一般的/グローバルな API を提供したいと考えています。ただし、公開される API は、参照されるオブジェクトの実際の機能のサブセットのみで構成される必要があります。私の最初の考えは、インターフェイスを使用することでした。これに関する問題は、悪質なプラグインがインターフェースを内部クラスにダウンキャストして混乱させる可能性があることです。(私も気にする必要がありますか?) 2 番目の考えは、プロキシ パターンを使用することでした。現在、私はそれらの両方を使用しています。これは本当に必要ではないと思います。しかし、バイナリ互換性を念頭に置いて、ここで複雑さを軽減するにはどうすればよいでしょうか?