1. وصف المشهد
متصل بـ "نمط مصنع تصميم Java (I)
أحد عيب نموذج المصنع هو أنه يدمر مبدأ إغلاق الفصل. على سبيل المثال ، إذا كنت بحاجة إلى إضافة جمع البيانات لملفات الكلمات ، اتبع الخطوات التالية:
الخطوة 2 تعديل فئة المصنع. إذا كانت فئة المصنع بحاجة إلى تعديل لكل فئة تنفيذ إضافية ، فسيكون هذا غير معقول.
يتمثل الحل في استخدام فئات المصنع المجردة ، وإنشاء فئة المصنع الخاصة بها لكل فئة تنفيذ ، وإضافة واجهات المصنع بحيث تقوم كل فئة مصنع بتنفيذ الواجهة.
بعد استخدام المصنع التجريدي ، يتم تغيير الخطوات المذكورة أعلاه إلى:
بعد التعديل ، نظرًا لأن فئة المصنع يتم استخلاصها ويتم تعريف واجهة المصنع ، فإن الكود الأصلي لم يعد ضروريًا لتعديله عند إضافة فئة التنفيذ الجديدة ، ولم يتم تدمير التنفيذ الأصلي.
كما هو مبين في الشكل أدناه:
2. عينة رمز
واجهة الحصول على بيانات الأداة:
الحزمة lums.designpatterndemo.abstractfactorydemo ؛ واجهة عامة المعدات dataCapture {public string capture (String filepath) ؛}فئة جمع ملفات PDF:
Package lums.designpatterndemo.abstractFactoryDemo ؛ الفئة العامة pdffileCapture تنفذ المعدات dataCapture {Override public string capture (String filepath) {return "pdf file content" ؛ }}فئة جمع الملفات Excel:
package lums.designpatterndemo.abstractfactorydemo ؛ public class excelfileCapture تنفذ المعدات dataCapture {Override public string capture (string filepath) {return "محتوى ملف excel" ؛ }}مصنع مجردة ، أي واجهة المصنع:
حزمة lums.designpatterndemo.abstractFactoryDemo ؛ واجهة عامة المعدات dataCaptureFactory {public appliceddatacapture getCapture () ؛ }مصنع جمع ملفات PDF:
حزمة lums.designpatterndemo.abstractfactorydemo ؛ الفئة العامة pdffileCapturefactory تنفذ المعدات devileCaptureFactory {Override Public EquipmentDataCapture getCapture () {return pdffileCapture () ؛ }}Excel File Collection Factory:
حزمة lums.designpatterndemo.abstractfactorydemo ؛ public excelfileCaptureFactory تنفذ المعدات dateacapturefactory {Override Public EquipmentDataCapture getCapture () {return new }}مثال اتصل على:
Package lums.designpatterndemo.abstractfactorydemo ؛ الطبقة العامة AbstractFactoryDemo {public static void main (string [] args) {equiperDataCaptureFactory fabric = new PdffileCaptureFactory () ؛ النسيج = جديد excelfileCaptureFactory () ؛ المعدات dataCapture capture = fabric.getCapture () ؛ سلسلة fileContent = capture.capture ("") ؛ system.out.println (fileContent) ؛ }}ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.