سؤال

أنا جديد في تصميم الأنماط والآن أريد تنفيذ الإستراتيجية Patern. إليك الرمز الخاص بي:

namespace StrategyPattern
{
    public interface ISendBehavior
    {
        void Send();
    }

    public class SendAppointment : ISendBehavior
    {
        public void Send()
        {
            // send item
        }
    }

    public class SendTask : ISendBehavior
    {
        public void Send()
        {
            // send item
        }
    }

    public class SendItem
    {
        ISendBehavior _sendBehavior;

        public SendItem(ISendBehavior sendbehavior)
        {
            _sendBehavior = sendbehavior;
        }

        public void Send()
        {
            _sendBehavior.Send();
        }
    }

    /* CALL */

    public class Aanroep
    {
        public void Verzenden()
        {
            SendItem app = new SendItem(new SendAppointment());
            app.Send();
        }

    }
}

في الطريقة التي ترسل فيها SendAppointment الفصل، سيتم إرسال العنصر. سؤالي هو، هل يجب علي الاتصال بقاعدة البيانات في هذه الفئة؟ إذا كان الأمر كذلك، فعليك أيضا الاتصال بقاعدة البيانات في SendTAsk. ولكن في هذه المرحلة أنا أكرر نفسي على حق؟ لذلك إذا تغيرت سلسلة الاتصال، يجب أن أقوم بتعديل هذا في كل فصل. كيف يمكنني حل هذه المشكلة؟

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

المحلول

ماذا عن تهيئة كل منفذ ISENDBEAVIOR مع كائن آخر مسؤول عن اتصال قاعدة البيانات؟

Verzenden الخاص بك () - التنفيذ سيكون مثل

IDatabaseConnection connection = new DatabaseConnection();

SendItem app = new SendItem( new SendAppointment( connection ) );

وسيتم تنفيذ isendbehavior.send () مثل هذا

_databaseConnection.Send( ... ); // fill behavior-specific information here (perhaps with properties)

بهذه الطريقة، يمكنك إعادة استخدام هذا idatabaseconnection لأي فصول أخرى.

نصائح أخرى

يمكن أن يكون لديك طبقة أخرى من التجريد لعمليات قاعدة البيانات. يجب أن تكون هذه الطبقة مسؤولة عن أخذ جميع طلبات قاعدة البيانات مركزية الوصول إليها. يجب تكوين سلاسل الاتصالات خارجيا، ويمكن أن تصل طبقة رسم الخرائط إلى البيانات مباشرة.

ال نمط مستودع هو نمط جيد لهذه الطبقة التي يمكنك تطبيقها. يمكن أن تجلس بين كائنات المجال الخاصة بك وطبقات رسم الخرائط.

نظرا لأنك لا تحب إجابة Lennaert عن تمرير الاتصال إلى صفك فلماذا لا تعكس ذلك وإنشاء فئة اتصال تستخدم نمط أمر بسيط وتمرير الفصل الخاص بك كمعلمة؟

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