سؤال

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

SoundObject * SoundObjectManager * SoundObjectory *

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

سيكون موضع تقدير أي مساعدة!

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

المحلول

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

نصائح أخرى

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

الوضع الافتراضي: أنا أكتب مكتبة صوتية أريد تشغيلها على منصات متعددة. سأحاول إجراء أكبر قدر ممكن من الكود من خلال النظام الأساسي المستقل، ولكن بالتأكيد سيحتاج البعض منه إلى التغيير لنظام التشغيل Windows مقابل OSX مقابل Linux.

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

لذلك أعرف هذا عام لطيف SoundObject الطبقة الأساسية التي تحدد جميع الأساليب يحصل العميل على استخدامها. ثم أنا جعل بلدي LinuxSoundObject, WindowsSoundObject, ، و 5 آخرون يستمدون من SoundObject. وبعد لكنني سأخفي كل هذه التطبيقات الخرسانية من المستخدم وتقديمها فقط مع SoundObject. وبعد بدلا من ذلك، عليك الاتصال بي SoundObjectFactory للاستيلاء على ما يبدو أنك قديم عادي SoundObject, ، ولكن حقا اخترت نوع وقت التشغيل الصحيح لك ومفانقته بنفسي.

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

هذا هو كل شيء مفاصل جدا، ولكن نأمل أن تحصل على الفكرة.

المصانع تعزل المستهلكين لواجهة من نوع وقت التشغيل (أي تنفيذ) يستخدم حقا.

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

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