ドラッグアンドドロップとマウスジェスチャーに関連するよく研究されたデザインパターンはありますか?特定のレイアウトを持つ親子階層のオブジェクトを含むキャンバスについて考えてみます。一部のオブジェクトは、マウスを使用して他のオブジェクトにドラッグアンドドロップできます。さらに、オブジェクトのサイズを変更したり、マウスで移動したりできます。
オブジェクト上のさまざまなホットスポットは、ユーザーの状態(ドラッグ、選択)に応じて動作が異なります。ドラッグアンドドロップ操作の場合、いくつかの要素は次のとおりです。1)ソースオブジェクトのユーザーへの視覚的フィードバック2)ドラッグ中のユーザーへの視覚的フィードバック3)ドロップ領域検出4)ドロップ互換性テスト5)ドロップアクション
標準APIは、これらを組み合わせてかなりモノリシックなコードにする傾向があります。
さらに、移動やサイズ変更などのジェスチャには、共通の要素があります。1)マウスがサイズ変更/移動領域にあるときのユーザーへの視覚的フィードバック2)移動/サイズ変更操作中の視覚的フィードバック3)操作の完了/キャンセル。
問題は、コードを合理化し、ビジュアルレベルとドキュメントレベルの責任を分離し、おそらくこの宣言型の多くを分離する方法はありますか?
たとえば、マウスの下のポイントがドロップターゲットであるかどうかを判断するには、ChainofResponsibilityパターンと組み合わせた何らかの形式のヒットテストを使用する場合があります。
この厄介な問題に規律と組織をもたらす優れたデザインパターンが必要だと思います。
乾杯、