Saya telah membaca tentang MVP, khususnya Supervising Controller. Satu hal yang saya mengalami kesulitan membungkus kepala saya adalah bagaimana Lihat berinteraksi dengan Model.
Menurut pemahaman saya, Presenter harus memperbarui Model dan bahwa Tampilan dibaca dari Model. Presenter juga dapat memperbarui tampilan melalui antarmuka. Artikel Martin Fowler tentang ini tampaknya menunjukkan hal itu ( http://martinfowler.com/eaaDev/SupervisingPresenter.html ).
Namun, artikel / blog lain memperlihatkan pandangan memperbarui model secara langsung ( https://blogs.msdn.microsoft.com/erwinvandervalk/2009/08/14/the-difference-between-model-view-viewmodel-and-other- pola presentasi terpisah / ).
Saya tahu ini hanya pola sehingga akan ada implementasi yang berbeda, tetapi pandangan memperbarui model sepertinya melakukan lebih dari yang seharusnya.
Katakanlah misalnya saya punya kelas orang yang berisi nama dan nomor telepon. Tampilan dapat menampilkan nama dan nomor ini dan tombol kirim untuk mengubah nama dan nomor orang tersebut. Ketika tombol kirim diklik saya akan mengharapkan pembaruan akan ditangani di Presenter bukan View. Namun, artikel yang saya referensikan mengusulkan agar tampilan dapat langsung memperbarui model.
Jadi, haruskah tampilan memperbarui model? Atau haruskah itu hanya ditangani oleh Presenter?
EDIT:
Kode dari artikel MSDN:
public class PersonalDataView : UserControl, IPersonalDataView
{
protected TextBox _firstNameTextBox;
public void SetPersonalData(PersonalData data)
{
_firstNameTextBox.Value = data.FirstName;
}
public void UpdatePersonalData(PersonalData data)
{
data.FirstName = _firstNameTextBox.Value;
}
}
Dari artikel Presenter Pembimbing Fowler yang Anda tautkan dalam pertanyaan Anda:
Dikatakan dengan jelas bahwa untuk semua tugas sederhana, tampilan dapat berbicara langsung dengan model. Jadi itu tidak bertentangan dengan artikel MSDN. Ini tepat karena untuk pemetaan sederhana / pengikatan properti Anda tidak perlu melibatkan lapisan lain karena ini hanya akan mempersulit hal-hal tanpa banyak manfaat.
Sekali lagi, Fowler membicarakan hal ini di akhir artikel:
Anda harus mengingat beberapa hal:
if
pernyataan dalam kode tampilan, pikirkan apakah itu seharusnya menjadi bagian dari presenter atau model.sumber