1. مفهوم نموذج البناء
التعريف: فصل بناء كائن معقد عن تمثيله بحيث يمكن لعملية البناء نفسها إنشاء تمثيلات مختلفة ؛
Core: منفصل البناء والتمثيل ، تختلف تمثيلات مختلفة عن نماذج المصنع التجريدية عند الإنشاء:
(1) على غرار نمط المصنع التجريدي ، لأنه يمكن أيضًا إنشاء كائنات معقدة. الفرق الرئيسي هو أن نموذج البناء يركز على بناء كائن معقد خطوة بخطوة ، مع التركيز على ترتيب نوع الجزء وعملية التجميع. يركز نموذج المصنع التجريدي على سلسلة متعددة من كائنات المنتج (بسيطة أو معقدة). يقوم نمط البناء بإرجاع المنتج في الخطوة الأخيرة ، وبالنسبة للمصنع التجريدي ، يعود المنتج على الفور.
(2) في وضع البناء ، هناك مشرف يدير المنشئ. يتصل المستخدم بالمشرف ، ويتصل المشرف بالمنشئ ويحصل أخيرًا على المنتج. أي أن نموذج البناء يمكن أن يفرض عملية بناء خطوة بخطوة.
2. دورها
(1) دور البناء التجريدي: يتم استخدام هذا الدور لتنظيم مكونات مختلفة للمنتج وتجريده ، وهو مستقل بشكل عام عن منطق التطبيق.
(2) دور البناء الخرساني:
هذا الدور ينفذ جميع الطرق المحددة في المنشئ التجريدي ويعيد مثيل منتج مدمج.
(3) دور (المنتج) دور:
هذا الدور هو كائن معقد في البناء ، وسيكون هناك أكثر من فئة منتج واحد في النظام. هذه المنتجات لا تحتوي بالضرورة على واجهات عامة ويمكن أن تكون غير ذات صلة تمامًا.
(4) دور المخرج:
الشخصية هي المسؤولة عن ترتيب ترتيب الوحدات النمطية الحالية ثم إخبار منشئ المنشئ بالبدء في البناء.
3. مثال
Builder Builder {void buildparta () ؛ void buildpartb () ؛ void buildpartc () ؛ } الطبقة العامة builderimpl تنفذ builder {Override public void buildparta () {system.out.println ("build part a") ؛ } Override public void buildpartb () {system.out.println ("Build Part B") ؛ } Override public void buildpartc () {system.out.println ("build part c") ؛ }} الطبقة العامة builderimpl2 تنفذ builder {Override public void buildparta () {system.out.println ("build part aa") ؛ } Override public void buildpartb () {system.out.println ("إنشاء جزء bb") ؛ } Override public void buildpartc () {system.out.println ("build part cc") ؛ }} / ** * Commander: Guide How To Build * Combination Builder */ Public Class Director {Private Builder Builder ؛ المدير العام (باني باني) {this.builder = builder ؛ } / *** طريقة البناء: تحدد عملية البناء* إذا كانت هناك حاجة إلى عمليات أخرى لتنفيذها ، فيمكنك New One Commander Director* / public void Construct () {system.out.println ("Director Outmons Builder للبناء") ؛ builder.buildparta () ؛ builder.buildpartb () ؛ builder.buildpartc () ؛ }} Director2 {Private Builder Builder ؛ Director2 (Builder Builder) {this.builder = builder ؛ } / *** طريقة البناء: تحدد عملية البناء* إذا كانت هناك حاجة إلى عمليات أخرى لتنفيذها ، فيمكنك New One Commander Director* / public void Construct () {system.out.println ("Director2 Outmons Builder للبناء") ؛ builder.buildpartb () ؛ builder.buildpartc () ؛ builder.buildparta () ؛ }} اختبار الفئة العامة {public static void main (string [] args) {builder builder = new builderimpl () ؛ مدير المدير = مدير جديد (باني) ؛ / * * عملية البناء نفسها ، وحدات مختلفة (BuildParta ، BuildPartb ، BuildPartc) ، تطبيق جديد منشئ * عمليات بناء مختلفة ، مديرة واحدة جديدة * عمليات بناء مختلفة ، تنفيذ مختلف الوحدة ، مدير جديد ، New Builder */ director.construct () ؛ System.out.println ("") ؛ Builder Builder2 = New Builderimpl2 () ؛ مدير 2 = مدير جديد (Builder2) ؛ Director2.Construct () ؛ System.out.println ("") ؛ Builder Build3 = New Builderimpl2 () ؛ Director2 Director3 = New Director2 (Builder3) ؛ Director3.Construct () ؛ }}مطبعة:
مدير قيادة المخرج لبناء البناء قطع غيار البناء جزء البناء ب الجزء ب باني المخرج باني القيادة لقطع غيار البناء AA جزء البناء الجزء BB جزء CC Builder لقطع غيار البناء ب.
4. مزايا وعيوب (1) المزايا:
A. يمكن أن تسمح لك بتغيير التمثيل الداخلي للمنتج.
ب. تغليف المبنى والرمز التمثيلي.
C. توفير السيطرة على خطوات تتجاوز عملية البناء.
(2) العيوب:
أ. هناك حاجة لإنشاء مجموعة متنوعة من أنواع المنتجات المختلفة بشكل فردي.
5. سيناريوهات الاستخدام:
(1) عندما تكون الخوارزمية لإنشاء كائنات معقدة مستقلة عن مكونات الكائن وكيفية تجميعها.
(2) عندما يجب أن تسمح عملية البناء للكائن الذي تم إنشاؤه أن يكون له تمثيلات مختلفة (نفس الطريقة ، وترتيب تنفيذ مختلف ، ونتائج مختلفة).