التعريف: يوفر واجهة لإنشاء مجموعة من الكائنات ذات الصلة أو المترابطة دون تحديد فئاتها الملموسة.
النوع: إنشاء مخطط فئة نمط الفئة:
الفرق بين نمط المصنع التجريدي ونمط طريقة المصنع
نمط المصنع التجريدي هو نسخة ترقية من نمط طريقة المصنع ، والتي يتم استخدامها لإنشاء مجموعة من الكائنات ذات الصلة أو المترابطة. الفرق بينه وبين نموذج طريقة المصنع هو أن نموذج طريقة المصنع يستهدف بنية التسلسل الهرمي للمنتج ؛ بينما يستهدف نموذج المصنع التجريدي هياكل التسلسل الهرمي للمنتج المتعدد. في البرمجة ، عادة ما يتجلى بنية المنتج كواجهة أو فئة مجردة. بمعنى أن جميع المنتجات التي يوفرها نموذج طريقة المصنع مستمدة من نفس الواجهة أو الفئة التجريدية ، في حين أن المنتجات التي يوفرها نموذج المصنع التجريدي مستمدة من واجهة مختلفة أو فئة مجردة.
في نموذج المصنع التجريدي ، هناك مفهوم لعائلة المنتج: تشير ما يسمى عائلة المنتج إلى عائلة من المنتجات المكونة من منتجات ذات صلة وظيفيًا في التسلسلات الهرمية للمنتجات المختلفة. سلسلة المنتجات التي يوفرها نموذج المصنع التجريدي تشكل عائلة منتج ؛ في حين أن سلسلة المنتجات التي توفرها طريقة المصنع تسمى بنية هرمية. ما زلنا نستخدم مثال إنتاج السيارات لتوضيح الفرق بينهما.
في الرسم التخطيطي للفئة أعلاه ، يُطلق على هاتشباك وسيدان هيكلين هرميين مختلفين ؛ بينما تسمى 2.0 مركبات إزاحة و 2.4 مركبات إزاحة لعائلتين مختلفتين للمنتج. لكي تكون أكثر تحديداً ، ينتمي هاتشباك 2.0 الإزاحة وهاتشباك 2.4 الإزاحة إلى نفس بنية المستوى ، وهي سيارة سيدان 2.0 الإزاحة وسيارة السيدان 2.4 الإزاحة تنتمي إلى بنية مستوى آخر ؛ في حين أن هاتشباك 2.0 الإزاحة وسيادة سيدان 2.0 الإزاحة تنتمي إلى نفس عائلة المنتج ، و Hatchback 2.4 الإزاحة وسيارة سيدان 2.4 الإزاحة تنتمي إلى عائلة منتج آخر.
بمجرد أن تفهم مفاهيم الهيكل الهرمي وعائلة المنتج ، ستفهم الفرق بين نموذج طريقة المصنع ونموذج المصنع التجريدي. إذا كانت جميع منتجات المصنع تنتمي إلى نفس الهيكل الهرمي ، فإنها تنتمي إلى نموذج طريقة المصنع ؛ إذا كانت منتجات المصنع تأتي من هياكل هرمية متعددة ، فإنها تنتمي إلى نموذج المصنع التجريدي. في هذا المثال ، إذا كان نموذج المصنع يوفر هاتشباك 2.0 إزاحة و 2.4 هاتشباك ، فإنه ينتمي إلى نموذج طريقة المصنع ؛ إذا كان نموذج المصنع يوفر منتجين ، 2.4 هاتشباك الإزاحة وسيارة سيدان 2.4 ، فإن نموذج المصنع هذا هو نموذج مصنع مجردة ، لأن المنتجات التي توفرها تنتمي إلى هيكلين هرميين مختلفين. بالطبع ، إذا كان المصنع يوفر منتجات من جميع النماذج الأربعة ، لأن المنتجات تنتمي إلى هيكلين هرميين ، فإنه بالطبع سوف ينتمي أيضًا إلى نموذج المصنع التجريدي.
مثال
دعونا نلقي نظرة على مثال الطبقة التجريدية لفئة المصنع:
حزمة AbstractFactory ؛ Public Class Class AbstractCreator {// إنشاء طريقة منتج Public AbstractProducta CreateProducta () ؛ // إنشاء طريقة المنتج العام الملخص التجريدي productb createProductB () ؛}فئة تجريدية من المنتج أ
حزمة AbstractFactory ؛ الطبقة التجريدية العامة الملخصة producta {// الطريقة التي يشاركها المنتج في حدوث حدوث حدوث حدوث حدوث حدوث باطل عام () {system.out.println ("طريقة معالجة منطق الأعمال المشتركة بواسطة المنتج A ...") ؛ }. }فئة مجردة من المنتج ب
حزمة AbstractFactory ؛ Public Class Class AbstractProductB {// Method by Product B public void arhemethod () {system.out.println ("طريقة معالجة منطق الأعمال المشتركة بواسطة المنتج B ...") ؛ } // منتجات فرعية مختلفة للمنتج ب public public void dosomething () ؛ } حزمة فئة تنفيذ المصنع الملخص ؛ يمتد Creator1 من الطبقة العامة ExctractCreator {Override Public AbstractProducta CreateProducta () {return New Producta1 () ؛ } Override Public AbstractProductB CreateProductB () {return New ProductB1 () ؛ }} فئة تنفيذ المصنع حزمة AbstractFactory ؛ يمتد Creator2 من الطبقة العامة ExcloStRuctoror {Override Public AbstractProducta CreateProducta () {return New Producta2 () ؛ } Override Public AbstractProductB CreateProductB () {return new ProductB2 () ؛ }}المنتج A1
حزمة AbstractFactory ؛ تمتد Public Class Producta1 ExcloStProducta {Override public void dosomething () {system.out.println ("طريقة معالجة منطق الأعمال للمنتج A1 ...") ؛ }}المنتج A2
حزمة AbstractFactory ؛ Public Class Producta2 يمتد AbstractProducta {Override public void dosomething () {system.out.println ("طريقة معالجة منطق الأعمال للمنتج A2 ...") ؛ }}المنتج B1
حزمة AbstractFactory ؛ يمتد Public Class ProductB1 AbstractProductB {Override public void dosomething () {system.out.println ("طريقة معالجة منطق الأعمال B1 ...") ؛ }}المنتج B2
حزمة AbstractFactory ؛ يمتد Public Class ProductB2 AbstractProductB {Override public void dosomething () {system.out.println ("طريقة معالجة منطق الأعمال B2 ...") ؛ }} مزايا نمط المصنع التجريدي
بالإضافة إلى امتلاك مزايا نموذج طريقة المصنع ، فإن أهم ميزة هي أن عائلة المنتج يمكن تقييدها في الفصل. تتمتع عائلة المنتج المزعومة عمومًا بعلاقة معينة إلى حد أكبر أو أقل. يمكن أن يحدد نموذج المصنع التجريدي ووصف العلاقة بين عائلة المنتج داخل الفصل دون الحاجة إلى تقديم فئة جديدة خصيصًا للإدارة.
عيوب نمط المصنع التجريدي
سيكون توسيع عائلة المنتج مهمة شاقة للغاية. إذا كان من الضروري إضافة منتج جديد إلى عائلة المنتج ، فيجب تعديل جميع فصول المصنع تقريبًا. لذلك ، عند استخدام نموذج المصنع التجريدي ، يعد تقسيم بنية التسلسل الهرمي للمنتج مهمًا للغاية.
السيناريوهات المعمول بها
يمكن استخدام أنماط المصنع المجردة عندما تكون الكائنات المراد إنشائها عبارة عن سلسلة من عائلات المنتجات المترابطة أو المترابطة. بعبارة أكثر وضوحًا ، في نظام الميراث ، إذا كانت هناك هياكل هرمية متعددة (أي وجود فئات مجردة متعددة) ، وهناك ارتباطات أو قيود معينة بين فئات التنفيذ مقسمة إلى كل بنية هرمية ، يمكن استخدام نموذج المصنع التجريدي. من الأنسب استخدام مصانع مستقلة متعددة لإنشاء منتجات إذا لم تكن هناك ارتباطات أو قيود بين فئات التنفيذ في كل تسلسل هرمي.
لخص
سواء كان ذلك هو نموذج المصنع البسيط ، أو نموذج طريقة المصنع ، أو نموذج المصنع التجريدي ، فهي تنتمي جميعًا إلى نموذج المصنع وتشبه إلى حد كبير في الشكل والخصائص. هدفهم النهائي هو فصل. عند استخدامه ، لا يتعين علينا الاهتمام بما إذا كان هذا النمط هو طريقة المصنع أو نموذج المصنع التجريدي ، لأنه من الصعب فهم التطور بينهما. غالبًا ما تجد أنه عندما يأتي متطلب جديد ، يتم إجراء تعديل قليل ويتم إضافة طريقة جديدة ، فإن المنتجات في الفصل تشكل عائلة المنتج في هياكل هرمية مختلفة ، فإنها تصبح نموذج المصنع التجريدي ؛ وبالنسبة لنموذج المصنع التجريدي ، عندما يتم تقليل الطريقة لجعل المنتجات المقدمة لم تعد تشكل عائلة المنتج ، فإنها تتطور إلى نموذج طريقة المصنع.
لذلك ، عند استخدام وضع المصنع ، تحتاج فقط إلى رعاية ما إذا كان الغرض من الحد من الاقتران قد تم تحقيقه.