هل ينتهك نمط الإستراتيجية مبدأ المسؤولية الفردية؟

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

سؤال

إذا ذكرت مبدأ المسؤولية الفردية أن كل كائن يجب أن يكون له سبب واحد للتغيير وطبقة استراتيجية واحدة تنفذ مع نمط الاستراتيجية (بحكم التعريف) لها طرق متعددة يمكن أن تتغير لأي عدد من الأسباب، فهل هذا يعني أنه من المستحيل تنفيذ ذلك نمط الاستراتيجية دون انتهاك SRP؟

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

المحلول

كيف ذلك؟ نمط الاستراتيجية إذا كنت تتذكر هو في الأساس وسيلة لتفكيك المنطق / الخوارزمية المستخدمة. لذلك العميل لديه m_ialgorithm. يجب أن يكون ialgorithm مجموعة صغيرة من الأساليب إن لم يكن واحدا.

السبب الوحيد الذي يمكن أن يتغير فيه فئة AlgoImplementation هو

  • إذا كان هناك تغيير في الخوارزمية التي تنفذها. فيالتغيير في مسؤوليتها / سلوكها)
  • أو إذا تغير ialgoritm .. والتي ستكون نادرة إلا إذا ارتكبت خطأ في تحديد الواجهة. (إنه تغيير في واجهة عامة الخاصة به - لذلك لا تفكر في انتهاك SRP.

نصائح أخرى

أرى فعلا العكس. يتيح لك نمط الاستراتيجية Decouple Oilse، الخوارزميات (المحتملة) المستخدمة للحصول على بعض الوظائف التي تم إجراؤها واتخاذ منطق صنع القرار حول هذه الخوارزميات.

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

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

استخدم نمط الاستراتيجية لتحديد مجموعة من الخوارزميات التي يستخدمها العميل بالتبادل، ثم يمكن استخدام مبدأ المسؤولية الفردية لتحديد مكان تجميع العميل والخوارزميات التي يستخدمها العميل داخل النظام. لا تريد أن تضطر إلى إزعاج رمز الخوارزمية أ إذا كان عملك هو فقط في الخوارزمية B والعكس صحيح. بالنسبة لغات مجمعة، يمكن أن يكون لهذا تأثير كبير في تعقيد دورة إعادة عامل وإصدار ونشرها. لماذا الإصدار وإعادة ترجمة العميل والخوارزميات A، C، و D عندما تكون التغييرات الوحيدة التي تحتاج إلى مكان الخوارزمية B.

مع هذا الفهم من مبدأ المسؤولية الفردية، لا أرى أين يوجد فصل ينفذ نمط الاستراتيجية SRP. الغرض من فئة العميل هو تنفيذ نمط الاستراتيجية، أي مسؤولية العملاء. الغرض من الخوارزميات هو تطبيق المنطق الذي يتحملونه المسؤولية عنها، ويقول مبدأ المسؤولية الفردية عدم تجميعها معا داخل النظام لأنها ستتغير لأسباب مختلفة. هذا هو بلدي 0.02 دولار.

نقطة جيدة :) أعتقد أنه أكثر توجيهية مسؤولية واحدة، مما يجعل من المنطقي بالنسبة للعديد من الحالات، ولكن بالنسبة لبعضها أيضا ليس كذلك، مثل نمط الاستراتيجية ..

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