وضع طريقة المصنع
غالبًا ما يتطلب الدافع لإنشاء كائن عملية معقدة ، لذلك فهو غير مناسب للإدراج في مصنع مركب. عندما تكون هناك منتجات جديدة ، يجب تعديل المصنع المركب ، وهو ما لا يفضي إلى التوسع.
علاوة على ذلك ، يمكن أن يتطلب إنشاء بعض الكائنات معلومات لا يمكن الوصول إليها بواسطة المصنع المركب. لذلك ، حدد واجهة المصنع وتحديد المنتج الذي تم إنشاء مثيل له من خلال تنفيذ هذه الواجهة. هذا هو نمط طريقة المصنع ، الذي يؤخر تثبيت الفصل إلى الفئة الفرعية.
غاية
1. تحديد واجهة واترك الفئة الفرعية تقرر المنتج الذي يجب إنشاءه.
2. إنشاء كائنات من خلال واجهة مشتركة.
ينجز
1. واجهة المنتج والمنتجات المحددة سهلة الفهم.
2. يوفر فئة المصنع طريقة مصنع لإرجاع كائن المنتج. لكن طريقة المصنع هذه مجردة.
3. تنفيذ أساليب المصنع في مصانع محددة وإكمال إنشاء منتجات محددة.
. } class winbuttonfactory تنفذ buttonfactory {button createButton () {return new winbutton () ؛ }} class macbuttonfactory تنفذ buttonfactory {button createButton () {return new MacButton () ؛ }} السيناريوهات المعمول بها
1. عندما يكون هناك رمز مكرر أكثر عند إنشاء كائن ، يمكنك التفكير في استخدام نمط طريقة المصنع لتنفيذ هذه الأجزاء المكررة.
2. إن إنشاء كائن يتطلب الوصول إلى معلومات معينة ، والتي لا ينبغي تضمينها في فئة المصنع. ثم يمكن للفئات الفرعية تنفيذ إنشاء الكائن.
3. عندما تحتاج إلى إدارة مركزيًا لإنشاء كائنات للحفاظ على تناسق البرنامج.
نمط المصنع التجريدي
يوفر تحديد أنماط المصنع المجردة وسيلة لتغليف مجموعة من المصانع المنفصلة بنفس السمة. في الاستخدام العادي ، يحتاج برنامج العميل إلى إنشاء تنفيذ ملموس للمصنع التجريدي ، ثم استخدم المصنع التجريدي كواجهة لإنشاء كائن ملموس لهذا الموضوع. لا يحتاج برنامج العميل إلى معرفة (أو رعاية) أنه يحصل على نوع محدد من الكائنات من طرق المصنع الداخلية هذه ، لأن برنامج العميل يستخدم فقط الواجهة المشتركة لهذه الكائنات. يفصل نمط المصنع التجريدي تفاصيل تنفيذ مجموعة من الكائنات عن استخدامها العام.
"المصنع" هو المكان الذي يتم فيه إنشاء المنتجات (الكائنات) ، والغرض من ذلك هو فصل المنتجات عن استخدامها. الغرض من نموذج المصنع التجريدي هو فصل واجهات العديد من المنتجات المجردة عن التنفيذ المحدد لمنتجات الموضوعات المختلفة. وبهذه الطريقة ، عند إضافة مصنع محدد جديد ، لا تحتاج إلى تعديل رمز العميل الذي يشير إلى المصنع التجريدي.
يتيح لك استخدام نمط المصنع التجريدي تغيير المصنع المحدد دون تعديل رمز العميل باستخدام المصنع ، حتى في وقت التشغيل. ومع ذلك ، فإن استخدام هذا النمط أو أنماط التصميم المماثلة قد يجلب التعقيد غير الضروري والعمل الإضافي إلى رمز الكتابة. الاستخدام السليم لأنماط التصميم يمكن أن يعوض مثل هذا "العمل الإضافي".
ينجز
1. AbstractFactory - يحدد طريقة الواجهة لإنشاء منتجات مجردة.
2. ConcreteFactory - تنفيذ طريقة لإنشاء منتجات محددة.
3. BustrictProduct - واجهة تعلن عن أنواع مختلفة من المنتجات.
4. المنتج - تحديد المنتجات المحددة المقابلة لـ ConcreteFactory وتنفيذ واجهة المنتجات التجريدية.
5. العميل - استخدام فصول التجريدية والتجريدية.
مجردة الفئة الملخصية producta Public Abstract Void Operationa2 () ؛ } class producta1 يمتد AbstractProducta {producta1 (string arg) {system.out.println ("hello"+arg) ؛ } // تنفيذ الكود هنا public void operationa1 () {} ؛ public void operationa2 () {} ؛ } class producta2 يمتد AbstractProducta {producta2 (string arg) {system.out.println ("hello"+arg) ؛ } // تنفيذ الكود هنا public void operationa1 () {} ؛ public void operationa2 () {} ؛ } class class AbstractProductB {// public Abstract void OperationB1 () ؛ // Public Abstract void OperationB2 () ؛ } class productB1 يمتد AbstractProductB {productB1 (string arg) {system.out.println ("hello"+arg) ؛ }. } // تنفيذ الكود هنا} الفئة الملخص AbstractFactory {Abstract AbstractProducta CreateProducta () ؛ الملخص التجريدي productb createProductB () ؛ } Class ConcreteFactory1 يمتد AbstractFactory {AbstractProducta CreateProducta () {return new producta1 ("producta1") ؛ } AbstractProductB CreateProductB () {return New ProductB1 ("ProductB1") ؛ }} class concretefactory2 يمتد AbstractFactory {AbstractProducta createProducta () {return new producta2 ("producta2") ؛ } AbstractProductB CreateProductB () {return New ProductB2 ("ProductB2") ؛ }} // Creator Factory - طريقة غير مباشرة لتشكيل مصانع المصانع من المصانع {Private Static AbstractFactory pf = null ؛ static AbstractFactory getFactory (string choice) {if (choice.equals ("a")) {pf = new ConcreteFactory1 () ؛ } آخر إذا (choice.equals ("b")) {pf = new ConcreteFactory2 () ؛ } إرجاع pf ؛ }} // عميل الفئة العامة العميل {public static void main (string args []) {AbstractFactory pf = factorymaker.getFactory ("a") ؛ ProcessProducta Product = pf.CreateProducta () ؛ // المزيد من مكالمات الوظائف على المنتج}}تستخدم فئة FactoryMaker وضع المصنع البسيط ، في حين يستخدم تنفيذ المصانع المحددة وضع طريقة المصنع.
السيناريوهات المعمول بها
1. النظام مستقل عن إنشاء وتكوين وتمثيل منتجاته.
2. عندما يتم تكوين النظام بواسطة أحد عائلات المنتجات المتعددة.
3. من الضروري التأكيد على تصميم سلسلة من كائنات المنتج ذات الصلة للاستخدام المشترك.
4. توفير مكتبة منتجات ، وترغب فقط في عرض واجهاتها بدلاً من التطبيقات.
ميزة
1. يتم فصل منتجات محددة عن رمز العميل
2. سلسلة يمكن أن تتغير بسهولة
3. قم بإنشاء سلسلة من عائلات المنتج معًا
عيب
1. من الصعب توسيع منتجات جديدة في عائلة المنتج ، فهي تتطلب تعديل واجهات المصنع التجريدي والمصنع المحدد.