MVPパターンは、ViewがPresenterにメソッドを公開することを前提としています。たとえば、Viewでは次のように書くことができます。
public HasClickhandlers getButton() {
return myBtn;
}
プレゼンターからこのメソッドにアクセスします。
view.getButton().addclickhanlder() ...
しかし、このスタイルでアプリをビルドすると、不要なコードがたくさんあります。たとえば、私は作成TablesViewしたいと思いますTablesPresenter(そして、TablesPresenterそれTablesViewは最小限のエンティティ(最小限のモジュール)であり、より小さなプレゼンターとビューに分割することはできず、より複雑にすることはできません)。次に、を作成するときにTablesView、このビュー内に別のカスタムコンポーネントを配置します- MyCustomTable。そして、Inside MyCustomTableput MyCustomHeader、inside MyCustomHeaderputMyCustomFilterなど(このシーケンスははるかに長くなる可能性があります)...したがって、問題は、Presenterから入力されたテキスト(ユーザーによる)にアクセスするときにMyCustomFilter、メソッドを公開する必要があることですMyCustomFilter:
//inside MyCustomFilter
public String getFilterText() {
return textBox.getText();
}
次に、を含むウィジェットでMyCustomFilter-つまり、MyCustomHeaderこのメソッドを公開する必要があります。
//inside MyCustomHeader
public String getFilterText() {
return myCustomFilter.getFilterText();
}
その後、内部でMyCustomTableこのメソッドを公開する必要があります。
//inside MyCustomTable
public String getFilterText() {
return myCustomHeader.getFilterText();
}
その後、 (を含む)getFilterText()内部のメソッドを公開する必要があり、 このすべての操作の後、プレゼンターは内部のテキストにアクセスできます..そして時々このシーケンスはもっと長くなります。では、この問題を解決するにはどうすればよいでしょうか。MVPについて理解できないことがあるかもしれません。TablesViewMyCustomTableMyCustomFilter