私は通常2つのアプローチを使用します:
- ビジネスルールを抽出してドメインクラスに委任します。
- ビューを論理的に関連するコントロールに分割してから、パーティションごとに新しいビューインターフェイスを作成します。次に、プレゼンターを同じ線に沿って分割できます。使用しているプラットフォームがサブフォームコンポーネントグループ(C#ユーザーコントロール、Delphiフレームなど)をサポートしている場合、これは再利用可能なコントロールを作成するための強力な方法です。
アップデート
ビューを分割するとき、私は通常、インターフェイスを分割し、フォームに複数のインターフェイスを実装させることから始めます。
public class ComplexForm: Form, ISubView, IOtherSubView
{
...
}
次に、プレゼンターを、作成したビューの数に分割します。
public class SubViewPresenter
{
private ISubView subView;
...
}
public class OtherSubViewPresenter
{
private IOtherSubView otherSubView;
...
}
さらに一歩進んで、ISubViewとIOtherSubViewの実装をユーザーコントロールに移動するか、そのままにしておくことができます。パッシブビューパターンを使用している場合、フォームはUIロジックのみを処理するため、これは子供の遊びです。プレゼンターを分割した後は、プレゼンター間の直接のコミュニケーションを避けようとします。通信が必要な場合は、ドメインオブジェクトを介して間接的に通信を試みます。