سؤال

لقد قمت تقليديًا بتنفيذ عرض موديل [عرض سلبي] مثل ذلك:

interface IView
{
string Title {set;}
}

class frmTextBox : Form, IView
{
...
public string Title
{
set { this.txtTitle.Text = value; }
}
...
}


class frmLabel : Form, IView
{
...
public string Title
{
set { this.lblTitle.Text = value; }
}
...
}

class Presenter
{
private IView view;
...
public void UpdateTitle
{
this.view.Title = "A Good Title";
}
...
}

وقد استخدمت تقليديًا فقط الأنواع البدائية في IView واجهه المستخدم (int, string, bool) لأنني أدركت دائمًا أنك بحاجة إلى استخدام الأنواع البدائية فقط في العرض. في مستودع (مثل NHibernate) ، إذا كنت أرغب في عرض قائمة بالعناصر في أ DataGridView, ، لا بد لي من تمرير مجموعة عامة (IList<T>) من النموذج إلى مقدم العرض. هل ينتهك ذلك القاعدة وراء وجهات النظر على أنها تتألف فقط من أنواع بدائية أم أن هذا معماريًا على ما يرام؟

حتى لو كان لدي كائن نقل البيانات (DTO) ، فسيكون ذلك أكثر من وحدة تحكم مشرفة بدلاً من أسلوب العرض السلبي الذي أحاول تنفيذه.

أفكار؟؟

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

المحلول

توجد أنماط لمساعدتك على تصميم الحل الخاص بك بناءً على تجارب الآخرين.

فهي ليست أكثر من قوالب رسمية.

استخدم أي بنية تجعلك أكثر إنتاجية ، حتى لو لم يتناسب مع تعريف تعسفي تمامًا.

نصائح أخرى

واو ربما كنت أفتقد الكثير. لم أر أبداً المشاهدات على أنها تقتصر على عرض الأنواع البدائية فقط.

سأكون مهتمًا بمعرفة سبب استخدام هذا التقييد وما هي فائدةه؟ هذا لا يعني أن "IMO هذا خطأ تام" ، لكنني فضولي فيما يتعلق بفوائده. اعتقادي هو أن أجهزة الكمبيوتر قوية بما فيه الكفاية الآن ، ما لم تستهدف مواصفات أداء محددة ، فإن تكلفة المطور الذي يطرد لتناسب بعض التوجيهات سيكون استخدامًا مكلفًا للموارد.

ليس أنه أي تأييد في حد ذاته. ولكن جميع مقالات MVC التي رأيتها كانت تتجول بسعادة حول الفصول بين العرض والوحدة. نظرًا لأن MVP هو مجرد شكل مختلف من MVC ، فأنا أقول إذا لم تكن مشكلة في MVC هل يجب أن تكون مع MVP؟

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