Latest web development tutorials

وضع استراتيجية

في وضع استراتيجية (استراتيجية نمط)، فعل فئة، يمكن تغيير أو الخوارزمية في وقت التشغيل. هذا النوع من أنماط التصميم تنتمي الأنماط السلوكية.

في وضع استراتيجية، ونحن خلق الأشياء ومجموعة متنوعة من استراتيجيات تغيير السلوك ككائن سياسة لتغيير تمثيل كائن سياق. كائن نهج لتغيير كائن سياق تنفيذ الخوارزمية.

مقدمة

القصد: تعريف عائلة من الخوارزميات، تلخص كل واحد منهم، وجعلها قابلة للتبديل.

أساسا لحل: في حالة خوارزمية مماثلة متعددة باستخدام إذا ... آخر جلبت معقدة وصعبة للحفاظ على.

متى تستخدم: نظام ديه العديد والعديد من الفئات، ولتمييزها فقط سلوكهم فوري.

كيفية إصلاح: وهذه الخوارزميات في حزمة فئة استبدال تعسفا.

رمز مفتاح: تنفيذ نفس واجهة.

أمثلة التطبيق: 1، الأفكار الجيدة تشو قه ليانغ، كل مجموعة هي استراتيجية.2، وطريقة السفر إلى السفر، واختيار لركوب الدراجة، بالسيارة، كل وسيلة للسفر هي استراتيجية. 3، جافا الهجوم الجوي على LayoutManager.

المزايا: 1، يمكن للخوارزمية التبديل بحرية.2، لتجنب استخدام متعددة مشروطة. 3، والتدرجية جيدة.

العيوب: 1، واستراتيجية زيادة.2، جميع فئات تحتاج من التعرض للسياسة الخارجية.

سيناريوهات الاستخدام: 1، إذا كان هناك نظام يسمح فيه العديد من الفئات، والفرق بينهما فقط في سلوكهم، ثم استخدم نموذج الإستراتيجية يمكن أن تختار حيوي للسماح للعمل في العديد من السلوكيات كائن.2، يحتاج إلى نظام لاختيار واحد من عدة خوارزميات حيوي. 3. إذا كائن لديه الكثير من السلوك، إذا كان هذا ليس هو الوضع الصحيح، كان لهذه الأفعال إلى استخدام ويتم اختيار عدة شروط تصريح لتحقيقه.

ملاحظة: إذا كانت السياسة هي نظام من أكثر من أربع سنوات، تحتاج إلى النظر في استخدام وضع مختلط، من أجل حل مشكلة الطبقة سياسة التوسع.

تحقيق

وسنعمل على تهيئة واضحة المعالم والأنشطة واجهة وتنفيذ كيان واجهةاستراتيجيةاستراتيجيةالاستراتيجية.السياق هو استخدام سياسة طبقية معينة.

StrategyPatternDemo، والطبقاتمظاهرة لدينا باستخدام السياقالسياقوالسياسة كائنات لإظهار السلوك عندما يتم استخدامها لتكوين أو تغيير هذا التغيير في السياسة.

نمط استراتيجية UML الرسم البياني

خطوة 1

إنشاء واجهة.

Strategy.java

استراتيجية الواجهة العمومية {
   الجمهور الباحث doOperation (الباحث NUM1، الباحث NUM2)؛
}

خطوة 2

إنشاء فئة الجهة التي تطبق الواجهة.

OperationAdd.java

الطبقة العامة OperationAdd تنفذ استراتيجية {
   Override
   الباحث العام doOperation (الباحث NUM1، الباحث NUM2) {
      العودة NUM1 + NUM2.
   }
}

OperationSubstract.java

الطبقة العامة OperationSubstract تنفذ استراتيجية {
   Override
   الباحث العام doOperation (الباحث NUM1، الباحث NUM2) {
      العودة NUM1 - NUM2.
   }
}

OperationMultiply.java

الطبقة العامة OperationMultiply تنفذ استراتيجية {
   Override
   الباحث العام doOperation (الباحث NUM1، الباحث NUM2) {
      العودة NUM1 * NUM2.
   }
}

خطوة 3

إنشاء فئةالسياق.

Context.java

فئة العمومي السياق {
   استراتيجية استراتيجية خاصة.

   السياق العام (استراتيجية الاستراتيجية) {
      this.strategy = الاستراتيجية؛
   }

   الجمهور executeStrategy الباحث (الباحث NUM1، الباحث NUM2) {
      العودة strategy.doOperation (NUM1، NUM2)؛
   }
}

خطوة 4

استخدامالسياقعندما انظر الى أنه يغيراستراتيجيةاستراتيجية تغييرالسلوك.

StrategyPatternDemo.java

الطبقة العامة StrategyPatternDemo {
   (وسائط سلسلة []) العامة ساكنة باطلة الرئيسية {
      السياق السياق = السياق الجديد (جديد OperationAdd ())؛		
      System.out.println ( "10 + 5 =" + context.executeStrategy (10، 5))؛

      السياق = السياق الجديد (OperationSubstract الجديدة ())؛		
      System.out.println ( "10-5 =" + context.executeStrategy (10، 5))؛

      السياق = السياق الجديد (OperationMultiply الجديدة ())؛		
      System.out.println ( "10 * 5 =" + context.executeStrategy (10، 5))؛
   }
}

خطوة 5

تحقق من الانتاج.

10 + 5 = 15
10--5 = 5
10 * 5 = 50