2

私は、Pcap ファイルを取得し、すべてのファイル パケットをマシンのネットワーク カードに再生する Pcapdot.Net DLL を使用して Winform アプリケーションを構築しました。

最近、すべてのメイン フォーム (すべてのボタン クリック\イベント) が混乱していることに気付きました。これらの関数内にすべてのメソッドを配置しましたが、コードが複雑に見えて理解しにくいので、このコードを再配置し始めました。

私のアプリケーションには、再生されたすべてのファイルが内部にあるリストボックスがあるため、たとえば、このすべての再生機能を再生ボタン内に配置します。Listbox.Items.Count をループし、内部でこのファイルを処理します。今、私は何か違うことをしたいのですが、これが私の質問です:

この Play 関数を処理するクラスを定義し、そのファイルがリストボックスに追加されるたびにメインフォームからイベントを起動するControlAddedか、ファイルを削除した後ControlRemovedにこのファイルを保持するリストを持つクラスにこのファイルを配置するのが一般的な方法ですか?

4

1 に答える 1

2

次のように並べ替えたほうがよいと思います (ビジネス ロジックを UI から分離するため)。

  • IEnumerable<string>のようなファイルのリストであるを返す Form クラス内に public メソッドを用意しますSelectedFiles()

  • eventユーザーが「再生」ボタンをクリックすると発生する「再生」ボタンのパブリックプロパティを作成しますPlayClicked

  • フォームの作成と表示を担当する「コントローラー」クラスを作成します。

コントローラー クラスはPlayClickedイベントにアタッチされます。コントローラーのハンドラーはPlayClicked、フォームのメソッドを呼び出してSelectedFiles()ファイルのリストを取得し、必要な処理をすべて実行します。

選択したファイルの処理コードを のようなものSelectedFileHandlerと呼ばれる別のクラスにラップし、ファイルを処理するためのロジックを、おそらくHandleFiles(IEnumerable<string> files).

その後、「コントローラー」クラスは引き続きPlayClickedイベントに接続されますが、SelectedFileHandler.HandleFiles()メソッドを使用してファイルを処理します。

これはあなたにとって意味がありますか?私はあなたが探しているものを誤解している可能性があります。

基本的には、 Model View ControllerまたはModel View Presenterアーキテクチャを使用する必要があると言っています。

于 2013-05-22T10:12:30.160 に答える