理論的には複合およびイテレータの設計パターンに最適な状況がありますが、これらのパターンで発生する問題は、取引を妨げる可能性のある基になるデータ構造にアクセスできないことです。
確かに、私はある国の都市のモールに店を構えることができます。これは全体の関係を作り、それの複合パターンを作成すると、店舗/モールの時間など、すべてのオブジェクト (ほとんどの部分) に対して共通のメソッドを実行できます。開いたり閉じたりしますが、実際にはそれ以上のものが必要です。
たとえば、既に保存されているファイルからこのような複合構造をツリー コントロールにロードする単純なタスクを考えてみましょう。現在、どのコンポーネントが何であるかさえわからないため、コンポーネントがツリー内の親、兄弟、または子であるかどうかを判断することさえできません。基本的に、どの複合パターンが最初に違反しているかを調べるために、ある種の型チェックを行う必要があります。これは特に外部反復子に当てはまります。
最初は、これら 2 つのパターンを組み合わせると大きな可能性があるように見えましたが、今ではほとんど役に立たないようです。
私は、これら 2 つのパターンの真の正当性を見つけようとしています。関数のような単純な教科書の例以外に、どこで最もよく使用できますかPrint()
cost()
。ファイルからロードされたときに複合体の階層を反映するために、複合体を型キャストしてツリー コントロールを埋める必要があるというのは正しいですか?