تعريف نمط طريقة المصنع
يتمثل معنى نمط طريقة المصنع في تحديد واجهة المصنع لإنشاء كائنات المنتج وتأجيل أعمال الإنشاء الفعلي إلى الفئات الفرعية. لم تعد فئة المصنع الأساسية مسؤولة عن إنشاء المنتج ، بحيث تصبح الطبقة الأساسية دور مصنع مجردة وهي مسؤولة فقط عن الواجهات التي يجب تنفيذها بواسطة فئات فرعية محددة للمصنع. تتمثل ميزة التجريد الإضافي في أن نموذج طريقة المصنع يمكنه تمكين النظام من تقديم منتجات جديدة دون تعديل دور المصنع المحدد.
أنه يحتوي على الأدوار التالية:
مخطط فئة UML للنمط
مثال
لنفترض أن هناك ثلاثة عبوات ، وهي عبوات حمراء ، عبوات زرقاء وإعادة التعبئة السوداء. يأمل المستخدمون في استخدام أقلام نقطة الالتواء لتوضيح لون العبوة.
وصف واستخدام بنية النمط
1. المنتج التجريدي: pencore.java
الفئة التجريدية العامة pencore {سلسلة الألوان ؛ كتاب باطل التجريد الجمهور (سلسلة S) ؛} 2. منتج محدد (concreteproduct) _1: redpencore.java
الطبقة العامة RedPencore يمتد pencore {redpencore () {color = "red" ؛ } public void writeWord (سلسلة s) {system.out.println ("اكتب كلمة"+color+":"+s) ؛ }} منتج محدد (concreteproduct) _2: bluepencore.java
الطبقة العامة bluepencore يمتد pencore {bluepencore () {color = "Blue" ؛ } public void writeWord (سلسلة s) {system.out.println ("اكتب كلمة"+color+":"+s) ؛ }} منتج محدد (concreteproduct) _3: Blackpencore.java
الطبقة العامة Blackpencore يمتد Pencore {Blackpencore () {color = "Black" ؛ } public void writeWord (سلسلة s) {system.out.println ("اكتب كلمة"+color+":"+s) ؛ }} 3. مُنشئ: ballpen.java
public class class ballpen {ballpen () {system.out.println ("أنتجت قلم نقطة مع"+getPencore (). color+"refill core") ؛ } pencore pencore getpencore () ؛ // طريقة المصنع} 4. concretecreator:
Redballpen.Javappublic Class Redballpen يمتد Ballpen {Public Pencore getPencore () {return new Redpencore () ؛ }} blueballpen.javapublic class Blueballpen يمتد Ballpen {public pencore getPencore () {return new bluepencore () ؛ }} BlackballPen.Javapublic Class Blackballpen يمتد Ballpen {public pencore getPencore () {return new Blackpencore () ؛ }} 5. application.java
تطبيق الفئة العامة {public static void main (String args []) {pencore pencore ؛ ballpen ballpen = new Blueballpen () ؛ pencore = ballpen.getPencore () ؛ Pencore.Writeword ("مرحبًا ، أنا سعيد بمعرفتك") ؛ ballpen = جديد redballpen () ؛ pencore = ballpen.getPencore () ؛ pencore.Writeword ("كيف حالك") ؛ ballpen = new BlackballPen () ؛ pencore = ballpen.getPencore () ؛ Pencore.Writeword ("من الجيد مقابلتك") ؛ }} لخص
ينتمي نمط طريقة المصنع إلى نمط إنشاء الفصل. في وضع طريقة المصنع ، تكون فئة الوالدين المصنع مسؤولة عن تحديد الواجهة العامة لإنشاء كائنات المنتج ، في حين أن الفئة الفرعية المصنع مسؤولة عن إنشاء كائنات منتج محددة. والغرض من ذلك هو تأخير تشغيل إنشاء فئة المنتج إلى الفئة الفرعية للمصنع ، أي لتحديد فئة المنتج المحددة التي ينبغي إنشاء مثيل لها من خلال الفئة الفرعية للمصنع.
نموذج طريقة المصنع هو مزيد من التجريد والترويج لنموذج المصنع البسيط. نظرًا لاستخدام تعدد الأشكال الموجهة للكائنات ، يحافظ نمط طريقة المصنع على مزايا نمط المصنع البسيط ويتغلب على عيوبه. في نموذج طريقة المصنع ، لم تعد فئة المصنع الأساسية مسؤولة عن إنشاء جميع المنتجات ، بل تعطي أعمال الخلق المحددة إلى الفئة الفرعية. هذه الفئة الأساسية مسؤولة فقط عن إعطاء واجهات يجب أن ينفذها المصنع المحدد ، ولكن ليس تفاصيل إنشاء فئة المنتج. يتيح ذلك نموذج طريقة المصنع للسماح للنظام بإدخال منتجات جديدة دون تعديل دور المصنع. الميزة الرئيسية لنموذج طريقة المصنع هي أنه عند إضافة فئات منتج جديدة ، لا تحتاج إلى تعديل النظام الحالي ، وتغليف تفاصيل إنشاء كائن المنتج. النظام لديه مرونة جيدة وقابلية التوسع. عيبه هو أنه يتطلب إضافة مصانع جديدة أثناء إضافة منتجات جديدة ، مما يؤدي إلى أزواج من فئات النظام ، مما يزيد من تعقيد النظام إلى حد ما.