تصف هذه المقالة حالة استهلاك KFC التي تنفذها Java باستخدام نموذج المصنع التجريدي. شاركه للرجوع إليه ، على النحو التالي:
1. تعريف نمط
يوفر نمط المصنع التجريدي واجهة لإنشاء عائلات من الكائنات ذات الصلة أو التابعة دون تحديد فئات تنفيذ الخرسانة.
يتيح نموذج المصنع التجريدي للعملاء استخدام واجهات مجردة لإنشاء مجموعة من المنتجات ذات الصلة. يتم فصل فصول العملاء وفصول المصنع. عندما يحتاج العملاء إلى أي منتجات ، فإنهم بحاجة فقط إلى طلبهم من المصنع. يمكن للعملاء الحصول على منتجات جديدة دون تعديل.
2. أمثلة على النموذج
1 تحليل نمط
نحن نقترض مشهد الأب والابن ذاهبان إلى متجر كنتاكي للاستثمار لتوضيح هذا النمط. لقطة الشاشة بعد إجراء التحليل التجريدي على النحو التالي
2 النمذجة الثابتة لأنماط المصنع التجريدية
3 أمثلة رمز
3.1 إنشاء طعام مجردة
خلاصة الغذاء - الملخص basefood
Package com.demo.factory.model ؛/** * * فئة قاعدة الطعام * * Author maofw * */public class class AbstractBaseFood {// الفئة المحمية نوع السلسلة ؛ // الكمية المحمية int num ؛ // سعر التعويم المحمي. // Total Float TotalPrice () {return this.num * this.price ؛ }}واجهة الطعام - ifood
package com.demo.factory.model ؛/*** واجهة غذائية مجردة** author maofw**/واجهة عامة ifood {/*** طباعة معلومات الطعام*/void printmesage () ؛}3.2 إنشاء فصول قاعدة مجردة للأطعمة المختلفة
فئة القاعدة همبرغر - هامبورغ
package com.demo.factory.model ؛ /** * hamburg class * author maofw * * /public class مجردة ، يمتد Hamburg AsscrentBaseFood أدوات ifood {public void printmesage () {system.out.println ("-" "، /t total:" + this.totalPrice ()) ؛ }}أجنحة الدجاج
package com.demo.factory.model ؛ /** * فئة أسناح الدجاج * @author maofw * * /public class dchickwings يمتد agrectedbasefood أدوات ifood {public void printmesage () {system.out.println ("-" /t Total: " + this.totalPrice ()) ؛ }}فئة قاعدة البطاطس الفرنسية - Frenchfries
package com.demo.factory.model ؛ /** * فئة الأساس المقلية الفرنسية * * author maofw * * /public class frenchfries frenchfries يمتد agrectedbasefood أدوات ifood {public void printmes () {system.out.println ("-" /t Total: " + this.totalPrice ()) ؛ }}فئة قاعدة المشروبات - المشروبات
package com.demo.factory.model ؛ /** * فئة قاعدة المشروبات * Author maofw * * /public class beverage يمتد ملخصات basefood أدوات ifood {public void printmesage () {system.out.println ("- + this.totalPrice ()) ؛ }}3.3 إنشاء أطعمة محددة
برجر ساق الدجاج الحار - شيناهاانبورم
package com.demo.factory.model.kfc ؛ استيراد com.demo.factory.model.hamburg ؛/** * برجر الدجاج الصيني الحار * * @author maofw * */public class chinahanburm يمتد hamburg {/** * method * * @parparam this.kind = "Timpicy" ؛ this.price = 14.0f ؛ this.num = num ؛ }}أجنحة الدجاج أورليانز - Chinachickenwings
package com.demo.factory.model.kfc ؛ استيراد com.demo.factory.model.chickenwings ؛/** * فئة تنفيذ أجنحة الدجاج * * Author maofw * */public class chinachickenwings this.price = 2.5f ؛ this.num = num ؛ }}
French Fries - Chinafrenchfries
package com.demo.factory.model.kfc ؛ استيراد com.demo.factory.model.frenchfries ؛/** * فئة تطبيق البطاطس الفرنسية * * Author maofw * */public class Chinafrenchfries يمتد FrenchFries {public Chinafrenchfries (int num) {this.kind = "Normal" ؛ this.price = 8.0f ؛ this.num = num ؛ }}فحم الكوك - Chinabeverage
package com.demo.factory.model.kfc ؛ استيراد com.demo.factory.model.beverage ؛/** * فئة تنفيذ المشروبات * * author maofw * */class public class chinabeverage تمتد beverage {public chinabeverage (int num) {this.kind = "cola" ؛ this.price = 7.0f ؛ this.num = num ؛ }}3.4 إنشاء مصنع
إنشاء مصنع KFC مجردة - IKFCFactory ينتج طعامًا مجردًا
package com.demo.factory.itf ؛ استيراد com.demo.factory.model.beverage ؛ استيراد com.demo.factory.model.chickenwings ؛ import com.demo.factory.model.frenchfries ؛ استيراد com.factory.model.hamburg ؛ */الواجهة العامة IKFCFACTORY {// إنتاج هامبرغر جمهور هامبورغ createhamburg (int num) ؛ // إنتاج البطاطس المقلية الفرنسية CreateFrenchfries (int num) ؛ // إنتاج أجنحة الدجاج العامة CreateChickenwings (int num) ؛ // إنتاج المشروبات العامة CreateBeverage (int num) ؛}قم بإنشاء مصنع KFC محدد - ChinakfcFactory لإنتاج أطعمة محددة
package com.demo.factory.itf ؛ import com.demo.factory.model.beverage ؛ import com.demo.factory.model.chickenwings ؛ import com.demo.factory.model.frenchfries ؛ import com.factory.model.hamburg ؛ com.demo.factory.model.kfc.Chinabeverage ؛ استيراد com.demo.factory.model.kfc.chinachickenwings ؛ استيراد com.demo.factory.model.kfc.chinafrenchfries ؛ IKFCfactory {// Product Coke Public Beverage CreateBeverage (int num) {return new Chinabeverage (num) ؛ } // إنتاج Orleans محمصات الدجاج الدجاج العامة CreateChickenwings (int num) {return new Chinachickenwings (num) ؛ } // إنتاج FrenchFries CreateFrenchfries (int num) {return New Chinafrenchfries (num) ؛ }. }}3.5 إنشاء فئة عميل - عميل
package com.demo.factory.custom ؛ استيراد com.demo.factory.itf.ikfcfactory ؛ استيراد com.demo.factory.model.beverage com.demo.factory.model.hamburg ؛/** * class class * * author maofw * */public class {// agrectory factory private ikfcfactory kfcfactory ؛ // طريقة المنشأة تمرر المصنع التجريدي كمعلمة إلى العميل العام (IKFCFACTORY KFCFACTORY) {this.kfcfactory = kfcfactory ؛ } / *** اطلب الطعام* // order حار دجاج الساق برجر العام العائم Orderhamburg (int num) {// الحصول على ساق الدجاج الحار برجر هامبورغ hamburg = kfcfactory.createhamburg (num) ؛ // معلومات طلب الإخراج hamburg.printmesage () ؛ // إرجاع إجمالي سعر العائد hamburg.totalPrice () ؛ } // Order Orleans Roast Chicken Wings Public Float Orderchickenwings (int num) {// Get Orleans Roast Chicken Wings Chickenwings = Kfcfactory.Createchickenwings (num) ؛ // معلومات الإخراج معلومات الدجاج. printmesage () ؛ // إجمالي سعر الإرجاع الدجاج. totalprice () ؛ }. // معلومات أمر الإخراج FrenchFries.PrintMesage () ؛ // إجمالي سعر الإرجاع FrenchFries.TotalPrice () ؛ }. // معلومات طلب الإخراج beverage.printmesage () ؛ // إرجاع إجمالي سعر الإرجاع. totalprice () ؛ }}3.6 عرض قصة
package com.demo.factory ؛ import java.lang.management.managementfactory ؛ import java.net.httpurlconnection ؛ import java.net.url ؛ import java.net.urlconnection ؛ import java.net.urlconnection ؛ import java.sql.connection ؛ java.sql.preparedStatement ؛ استيراد java.sql.sqlexception ؛ استيراد java.text.numberformat com.demo.factory.itf.chinakfcfactory ؛ import com.demo.factory.itf.ikfcfactory ؛ public class mainapp { / ** * main application method * * param args * / public static void main (] chinakfcfactory () ؛ / *** دخل أبي وابنه إلى كنتاكي فرايد تشيكن للاستعداد لطلب*/ عميل العميل = عميل جديد (KFCFactory) ؛ / *** ابدأ الطلب*/ // برجر دجاج حار عائم Hamhurgmoney = customer.orderhamburg (1) ؛ // Four Orleans أجنحة الدجاج المشوية تعويم الدجاج chickenwingsmoney = customer.orderchickenwings (4) ؛ // حزمة من البطاطا المقلية تعويم FrenchFriesMoney = customer.orderfrenchfries (1) ؛ // كوبين من cola float beveragemoney = customer.orderBeverage (2) ؛ System.out.println ("Total:" + (Hamhurgmoney + ChickenwingsMoney + FrenchFriesMoney + Beveragemoney)) ؛ }}نتائج التشغيل:
-برجر خاص ، سعر الوحدة: 14.0 ، الكمية: 1 ، المجموع: 14.0
-أجنحة الدجاج بنكهة النكهة ، سعر الوحدة: 2.5 ، الكمية: 4 ، المجموع: 10.0
-نكهة عادية ، سعر الوحدة: 8.0 ، الكمية: 1 ، المجموع: 8.0
-مشروب كولا ، سعر الوحدة: 7.0 ، الكمية: 2 ، المجموع: 14.0
المجموع: 46.0
3. مبادئ تصميم هذا النموذج
1 استخدم المزيد من مجموعات الكائنات وأقل ميراث
2. للبرمجة التجريدية ، وليس لبرمجة التنفيذ
3 يتم إنشاء كائنات المنتج من خلال طريقة التعرض للمصنع
4. استخدام المناسبات
1. إنشاء عائلة منتج واستخدم المنتجات ذات الصلة معًا ؛
2 تريد توفير مكتبة منتجات وتريد فقط عرض واجهتها بدلاً من التنفيذ ؛
3 عند استخدام المصنع مجتمعة.
لمزيد من المعلومات حول خوارزميات Java ، يمكن للقراء المهتمين بهذا الموقع عرض الموضوعات: "بنية بيانات Java وبرنامج تعليمي الخوارزمية" ، "ملخص" Tips Java ".
آمل أن يكون هذا المقال مفيدًا لبرمجة Java للجميع.