はい、これは良い考えです。すべての機能を含む 1 つの巨大な MXML またはクラスを作成するよりもはるかに優れています。
同時に、いくらかのオーバーヘッドが発生します。クラス間で通信するには (MXML ファイルは単なるクラスです)、イベントをディスパッチする必要があります。子コンポーネントを含む親コンポーネントは、その子コンポーネントのパブリック プロパティを設定できます (データ バインディングの有無にかかわらず)。
コンポーネントを可能な限り分離するようにしてください。子コンポーネントが明示的に親を参照するコードを書かないようにしてください (つまり、parent
プロパティを使用しないようにしてください)。代わりに、子コンポーネントからイベントをディスパッチし、親にイベントをリッスンさせます。
データグリッドとフォームを使用した例について:
これら 2 つのオブジェクト間で多くのやり取りが行われる場合は、それらを同じ MXML ファイルに保持する方がはるかに簡単です。これは、子コンポーネントを含む親コンポーネントであるシナリオのようには思えません。これらの「兄弟」は互いに通信する可能性が高いため、それらを同じ MXML ファイルに含める方が簡単です。ただし、状況が複雑になり、ファイルが数百行を超える場合は、それらを分離することでメリットが得られる可能性があります。
データ グリッドを使用せずにプロジェクト内の別の場所でフォーム コンポーネントを使用する予定があるとします。
あなたの質問に関して:「フォーム コンポーネントは、id にアクセスすることで、グリッド コンポーネントと通信できますか?」:
技術的には、はい、それを行うことができますが、フォーム コンポーネントとグリッド コンポーネントを緊密に結合することによってのみ可能です。フォーム コンポーネントは、parent
プロパティを使用して 1 レベル上に移動し、グリッドの ID を使用できます。しかし、parent
プロパティは として型付けされるためDisplayObjectContainer
、コンパイラをだます必要があり、強力な型付けの利点が失われます ( にDisplayObjectContainer
はグリッドの ID であるプロパティがないため)。したがって、これは可能ですが、良い設計ではなく、フォーム コンポーネントを他の場所で再利用できなくなります。
この密結合は、個別のコンポーネントを作成する目的を無効にします。したがって、イベントをディスパッチすることでそのコミュニケーションを促進するか、グリッドとフォームを同じドキュメントに配置することに戻ります:)
TLDR:
通常、再利用可能なコンポーネントを作成しようとする必要があります。だから私は一般的にその方向に傾くでしょう。MXML ファイルは単なるクラスであり、オブジェクト指向プログラミングで人々が話す通常のことはすべて適用されます。