أفضل لاعب:هل يجب على العرض تنفيذ واجهة مقدم العرض أم العكس؟

StackOverflow https://stackoverflow.com/questions/3309029

  •  27-09-2020
  •  | 
  •  

سؤال

أقوم بخطواتي الأولى مع GWT.عندي سؤال بعد القراءة:

في المثال الأول Presenter يحدد واجهة ل View.

public class ContactsPresenter implements Presenter {
  ...
  public interface Display extends HasValue<List<String>> {
    HasClickHandlers getAddButton();
    HasClickHandlers getDeleteButton();
    HasClickHandlers getList();
    void setData(List<String> data);
    int getClickedRow(ClickEvent event);
    List<Integer> getSelectedRows();
    Widget asWidget();
  }
}

وفي الثاني، View يحدد واجهة ل Presenter.

public interface ContactsView<T> {

  public interface Presenter<T> {
    void onAddButtonClicked();
    void onDeleteButtonClicked();
    void onItemClicked(T clickedItem);
    void onItemSelected(T selectedItem);
  }

  void setPresenter(Presenter<T> presenter);
  void setColumnDefinitions(List<ColumnDefinition<T>> columnDefinitions);
  void setRowData(List<T> rowData);
  Widget asWidget();
}

ما فكرة هذا الاختلاف؟

أيهما أختار؟

هل كانت مفيدة؟

المحلول

أعتقد أنه كان يجب عليك استخدام كلمة "يحدد" في سؤالك بدلاً من "التنفيذ" وإذا كان هذا هو الحال إذن لا يهم الفئة التي تحدد الواجهة.

يمكنك القيام بشيء مختلف عن طريق تحديد الواجهات في ملفاتها الخاصة.في نهاية اليوم، كل ما يهم هو أن يقوم المقدم بتنفيذ واجهة المقدم وأن يقوم العرض بتنفيذ واجهة العرض.

نصائح أخرى

deepak هذه مخاوف صالحة. كلمة تنفيذ عدم التعريف.

اسمحوا لي أن أشرح. في المثال الأول، عقد المقدمون العقد إلى طريقة العرض التي يجب أن تنفذ بمعنى آخر محركات أقراص ما ينبغي تنفيذه من خلال طرق عرض نهج MVP الكلاسيكي.

تصبح الأمور مربكة في المثال الثاني. عندما يكون للمقدم ليس سيطرة على طريقة العرض يجب أن تنفذ. هذا ليس MVP و Google يدعوها ك MVP. لا توجد طريقة يمكنك اختبار وجهات النظر مع اختبارات JRE / UNIT باستخدام هذا النهج. هذا لا يجعله سيئا على الرغم من عدم وجود MVP ويجب عدم استدعاء Google هذا MVP أو يجب أن يفسره لماذا هو MVP؟

saket bassal فصل الواجهة غير الصحيحة غير صحيح. سيؤدي ذلك إلى الصعب الحفاظ على الرمز كما ينمو التطبيق.

في رأيي، يمكنك أن تأخذ أي منهما، أتذكر Google قائلا إن بعض المكان الذي عمل فيه لأول مرة بالنسبة لهم ل AdWords والثانية للموجة.

أي كيف ينبغي عليك أيضا أن تنظر أيضا إلى FRAMWORKS مثل GWTP أو Errai

في البرنامج التعليمي الثاني تم تغيير التعليمات البرمجية لاستخدام واجهة مقدم العرض (المعرفة في العرض) لاستيعاب استخدام Uibinders و Java Generics.أعتقد أن واجهة مقدم العرض قد تم نقلها إلى واجهة العرض حيث أن كلاهما يشاركان نفس عام ر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top