سؤال

كما أن العنوان يسأل متى يجب الزناد في رأسك تنفجر مما يدل على "آها!يجب استخدام نمط مصنع هنا!"?أجد هذه اللحظات تحدث مع العديد من أنماط التصميم الأخرى, ولكن أبدا لا تتوقف عن نفسي والتفكير في هذا النمط.

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

المحلول

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

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

نصائح أخرى

مقتبسة من صندوق القناص:

استخدام طريقة مصنع نمط عندما

  • فئة لا يمكن توقع فئة من الكائنات يجب إنشاء
  • فئة يريد فرعية لتحديد كائن يخلق
  • دروس تفويض المسؤولية إلى واحدة من عدة مساعد فرعية ، وكنت ترغب في توطين المعرفة التي مساعد فرعية هو مندوب.

أنا أوصي صندوق جلوبل القناص الكتاب.فقد قسم على انطباق كل من 23 أنماط ويغطي.

وعندما تجد نفسك مع رمز ويبدو أن شيئا من هذا القبيل، ربما يجب عليك أن تكون باستخدام المصنع:

IFoo obj;
if ( someCondition ) {
   obj = new RegularFoo();
} else if ( otherCondition ) {
   obj = new SpecialFoo();
} else {
   obj = new DefaultFoo();
}

في الحالات المحددة التي أعتقد من نمط مصنع:

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

وأنت تتحدث عن الطريقة مصنع أو مصنع الخلاصة؟

والمشكلة الأساسية أن كل حل هو السماح للعملاء تحديد الطبقة الدقيقة التي يبني كود الإطار. على سبيل المثال، إذا قمت بتوفير واجهة، يمكن للعملاء تنفيذ، ومن ثم في التعليمات البرمجية لديك شيء من هذا القبيل:

IMyInterface x = new ConcreteClass();

وليس هناك طريقة للعملاء لتغيير الطبقة الدقيقة التي تم إنشاؤها دون الوصول إلى هذا الرمز.

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

IMyInterface x = factory.Create();
صدر

وfactory في من قبل العميل، وتنفذ واجهة الذي يحتوي خلق () - يمكن أن يقرروا الدرجة بالضبط

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

في أنماط التصميم كتاب من قبل عصابة الأربعة، فإنها تعطي مثالا من متاهة مع الغرف والجدران والأبواب. رمز العميل قد تبدو هذه:

IRoom r = mazeFactory.CreateRoom();
IWall nw = mazeFactory.CreateWall();
IWall sw = mazeFactory.CreateWall();
IWall ew = mazeFactory.CreateWall();
IWall ww = mazeFactory.CreateWall();
r.AddNorthWall(nw);
r.AddSouthWall(sw);
r.AddEastWall(ew);
r.AddWestWall(ww);

(وهلم جرا)

والجدران الخرسانية الدقيق والغرف والأبواب يمكن أن يقررها منفذة من mazeFactory، التي من شأنها أن تطبيق واجهة التي تقدمها (IMazeFactory).

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

وتستخدم

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

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