في أي الحالات فمن المنطقي لاستخدام المصنع الطبقات بدلا من ثابت الوظائف ؟

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

سؤال

حاليا أنا خلقت ABCFactory فئة من طريقة واحدة وخلق حروف الكائنات.الآن بعد أن أفكر في ذلك ، ربما بدلا من وجود مصنع, أنا يمكن أن تجعل مجرد أسلوب ثابت في حروف الأسلوب.ما هي برو ويخدع على جعل هذا التغيير ؟ فإنه لن يؤدي إلى نفس الشيء ؟ لا أتوقع وجود فئات أخرى ترث ABC, ولكن لا أحد يعرف!

شكرا

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

المحلول

في الواقع, إذا كنت ترغب في الحصول على فوائد مصنع فئة تحتاج إلى أسلوب ثابت في فئة خاصة بها.هذا سوف يسمح لك في وقت لاحق إنشاء مصنع جديد دروس أو تكوين قائمة واحدة للحصول على سلوكيات مختلفة.على سبيل المثال, مصنع واحد الطبقة قد خلق حيدات التي تنفذ IFourHoovedAnimal واجهة.قد يكون لديك خوارزمية مكتوب أن يفعل أشياء مع IFourHoovedAnimal و يحتاج إلى مثيل لها.في وقت لاحق يمكنك إنشاء مصنع جديد فئة بدلا instantiates بيغاسوس التي أيضا تنفيذ IFourHoovedAnimal هو.القديمة خوارزمية يمكن الآن استخدامها للحصول على بيغاسوس فقط باستخدام المصنع الجديد!لجعل هذا العمل على حد سواء PegasusFactory و UnicornFactory يجب أن ترث من بعض الفئة الأساسية(عادة فئة مجردة).

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

لقد فعلت هذا الأخير قبل (طريقة مصنع ثابت على الفئة التي يتم إنشاء مثيلات) جدا المشروعات الصغيرة, لكن فقط لأن أنا في حاجة إلى مساعدة ريفاكتور بعض القانون القديم ، ولكن تبقى التغييرات إلى الحد الأدنى.الأساس في هذه الحالة كان يؤخذ بها قطعة من التعليمات البرمجية التي تم إنشاؤها مجموعة من ASP.NET ضوابط وأمور جميع تلك الضوابط إلى عنصر تحكم المستخدم.أردت أن أجعل المستخدم الجديدة السيطرة الملكية على أساس ، ولكن كان من السهل على تراث القديم رمز لإنشاء عنصر تحكم المستخدم مع المعلمة القائمة منشئ.

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

نصائح أخرى

وجود واحد ، أسلوب ثابت يجعل هذا أكثر بكثير من الصعب اختبار في حين وجود instantiable كائن يسمح أن يكون هذا أسهل اختبار.أيضا, حقن التبعية في وقت لاحق أكثر من خيار غير ثابت الحل.

بالطبع, إذا كنت لا تحتاج إلى أي من هذه ثم هذه ليست حجج جيدة.

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

على فئات محددة, مصنع الأساليب هي في الحقيقة مجرد أسلوب المراوغة حول خلق نوع الفعلي (الذي لا يعني أنها ليست مفيدة ، ولكن كما كنت قد وجدت ، طريقة مصنع يمكن أن يكون حقا في أي مكان).

حيث طريقة مصنع يضيء حقا على الرغم من هو الأسلوب يخلق حالات من نوع الواجهة.

"D" في العم بوب الصلبة مبادئ وجوه المنحى والتصميم هو "التبعية عكس خروجا" تعتمد على التجريد ، ليس على التحجير.

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

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

الإفراط في استخدام أنماط التصميم خطير ، creational أنماط التصميم المنطقي عندما يكون لديك الطبقة الهرمية مع تعريف واجهات, أو بحاجة إلى بناء بدلا من كائنات معقدة.إذا كان لديك تصميم بسيط ، استخدام حلول بسيطة.وبالتالي في حالتك طريقة مصنع سيكون كافيا

نعم, أنت على حق, هو آخر تصميم نمط :)

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