التعريف: افصل بناء كائن معقد عن تمثيله ، بحيث يمكن لعملية البناء نفسها إنشاء تمثيلات مختلفة.
النوع: إنشاء مخطط فئة نمط الفئة:
أربعة عناصر
تنفيذ الكود
فئة المنتجات المجردة:
حزمة باني استيراد java.util.arraylist ؛ Public Abstract Class AbstractProduct {// سجل تنفيذ أمر ArrayList الخاص <string> part = new ArrayList <string> () ؛ التجريد الجمهور void dosomething () ؛ التجريد الجمهور الفراغ dootherthing () ؛ // النهائي ، لا يمكن تجاوز الفئات الفرعية التنفيذية النهائية الفارغة () {for (int i = 0 ؛ i <this.part.size () ؛ i ++) {string actionName = this.part.get (i) ؛ if (ActionName.equals ("dosomething")) {this.dosomething () ؛ } else if (actionname.equals ("dootherthing")) {this.dootherthing () ؛ }}} // النهائي ، لا يمكن تجاوز الفئات الفرعية setpart النهائي الفراغ (ArrayList <string>) {this.part = part ؛ }}فئة تنفيذ المنتج:
حزمة باني يمتد منتج الطبقة العامة الملخص {// الفئة الفرعية الوصف المحدد خطوات public void dosomething () {system.out.println ("سيفعل شيئًا ...") ؛ } public void dootherthing () {system.out.println ("لقد تم القيام بشيء. }}فئة البناء التجريدي:
حزمة باني استيراد java.util.arraylist ؛ Public Abstract Class Builder {// قم بتعيين أجزاء مختلفة من المنتج للحصول على منتجات مختلفة تجريدية تجريدية setPart (ArrayList <string> part) ؛ // بناء المنتج التجريدي التجريدي buildproduct () ؛ }فئة تنفيذ المنشئ:
حزمة باني استيراد java.util.arraylist ؛ يمتد concreteProduct للطبقة العامة باني {منتج خاص = منتج جديد () ؛ public void setPart (ArrayList <string> part) {this.product.setPart (part) ؛ } المنتجات العامة buildProduct () {return this.product ؛ }}فئة المخرج:
حزمة باني استيراد java.util.arraylist ؛ . منشئ البناء الخاص = جديد concreteproduct () ؛ المنتج العام getAproduct () {this.part.clear () ؛ this.part.add ("dosomething") ؛ this.part.add ("dotherthing") ؛ builder.setpart (part) ؛ return Builder.BuildProduct () ؛ }}عميل:
حزمة باني عميل الفئة العامة {public static void main (string [] args) {director director = new Director () ؛ System.out.println ("سوف يولد 10 منتجات") ؛ لـ (int i = 1 ؛ i <11 ؛ i ++) {system.out.println ("thread" + i + "products") ؛ Director.getAproduct (). Executive () ؛ System.out.println () ؛ }}}
مزايا نموذج البناء
أولاً ، يحتوي نموذج البناء على تغليف جيد للغاية. يمكن أن يؤدي استخدام نموذج البناء إلى التغلب بشكل فعال على التغييرات. في سيناريو استخدام نموذج البناء ، تكون فئات المنتجات العامة وفئات البناء مستقرة نسبيًا. لذلك ، يمكن أن يحقق تغليف منطق الأعمال الرئيسي في فئة المخرج استقرارًا أفضل بشكل عام.
ثانياً ، من السهل توسيع وضع البناء. إذا كان هناك متطلبات جديدة ، فيمكن القيام بذلك عن طريق تنفيذ فئة منشئ جديدة. في الأساس ، ليست هناك حاجة لتعديل الكود الذي تم اختباره وتمريره من قبل ، لذلك لن يكون هناك خطر على الوظيفة الأصلية.
الفرق بين نموذج البناء ونموذج المصنع
يمكننا أن نرى أن نموذج البناء يشبه إلى حد كبير نموذج المصنع. بشكل عام ، فإن نموذج البناء له دور "مخرج" واحد فقط من نموذج المصنع. في مخطط فئة نمط البناء ، إذا تم اعتبار فئة المخرج العميل النهائي ، فيمكن اعتبار الجزء المتبقي في الرسم البياني نمطًا بسيطًا للمصنع.
بالمقارنة مع نموذج المصنع ، يتم استخدام نموذج البناء عمومًا لإنشاء كائنات أكثر تعقيدًا. نظرًا لأن عملية إنشاء الكائن أكثر تعقيدًا ، فإن عملية إنشاء الكائنات مستقلة عن عملية إنشاء الكائنات لتشكيل فئة جديدة - فئة المخرج. بمعنى آخر ، يلف نموذج المصنع عملية الإنشاء الكاملة للكائن في فئة المصنع ، وتوفر فئة المصنع المنتج النهائي للعميل ؛ أثناء وجوده في نموذج البناء ، توفر فئة البناء عمومًا بناء كل مكون في فئة المنتج ، وتقدم عملية البناء المحددة إلى فئة المخرج. فئة المدير مسؤولة عن تشكيل كل مكون في منتج وفقًا لقواعد محددة ، ثم تسليم المنتج الذي تم تشكيله إلى العميل.
لخص
يشبه نموذج البناء نموذج المصنع. كلاهما نموذج البناء والسيناريوهات المعمول بها متشابهة للغاية. بشكل عام ، إذا كان بناء المنتج معقدًا ، فيرجى استخدام نموذج المصنع ؛ إذا كان بناء المنتج أكثر تعقيدًا ، فيرجى استخدام نموذج البناء.