تصف هذه المقالة استخدام وضع الاستراتيجية لـ Java لحل مشكلة المنتجات الترويجية للتسوق. شاركه للرجوع إليه ، على النحو التالي:
تعريف نمط
وضع السياسة: تحديد سلسلة من الخوارزميات ، وتغليف كل خوارزمية ويمكن استخدامها بالتبادل ، ويسمح وضع السياسة للخوارزمية بالتغيير بشكل مستقل عن تطبيق العميل الذي يستخدمه.
أمثلة على الوضع الثاني
1 تحليل نمط
نحن نقترض منتجات ترويجية لتوضيح هذا النموذج.
2 وضع السياسة مخطط فئة ثابتة
3 أمثلة رمز
3.1 إنشاء واجهة السياسة-issiongy
package com.demo.strategy ؛/** * واجهة السياسة * * Author * */الواجهة العامة ISTRETGY {/** * طريقة لحساب السعر الفعلي * * param consultprice * مبلغ الاستهلاك * return */public double realPric3.2 20 ٪ خصم استراتيجية الترويج-rebatestrategy
Package com.demo.strategy ؛/** * 20 ٪ من استراتيجية ترويج المنتج * * Author * */rebatestrategy من الطبقة العامة IsTrategy {Private Final Double Rate ؛ / *** بناء طريقة تعيين معدل الخصم*/ public rebatestrategy () {this.rate = 0.8 ؛ } / ** * حساب طريقة السعر الفعلي * * param الاستهلاك * مبلغ الاستهلاك * return * / public double realPrice (double consumpteprice) {return consumptprice * this.rate ؛ }}3.3 استراتيجية ترويجية لـ 200 OFF لأكثر
package com.demo.strategy ؛/** * 200 Off للمشتريات أكثر من 1000 استراتيجية ترويج المنتج * * Author * */class public class reducestrategy is isrategy {/** * طريقة لحساب السعر الفعلي * * param consumptionprice * return */public double enterprice (double constrateprice) } آخر {return ConspultPrice ؛ }}}3.4 20 ٪ من الاستراتيجية الترويجية لأكثر من 200 يوان الترويجي
package com.demo.strategy ؛/** * 200 أو أكثر ، خصم 20 ٪ على استراتيجية ترويج المنتج للأجزاء التي تزيد عن 200 * * Auuthor * */تعزيز الفئة العامة الأطراف isrategy {/** * طريقة لحساب السعر الفعلي * * @param cantumpteprice * return */public double alwerprice (consultPrice) 200) * 0.8 ؛ } آخر {return ConspultPrice ؛ }}}3.5 إنشاء سياق
package com.demo.context ؛ import java.math.bigdecimal ؛ استيراد com.demo.strategy.istrategy ؛/** * بيئة السياق * * Author * */سياق الطبقة العامة {// السياسة الحالية الإستراتيجية الخاصة iStrategy الخاصة ؛ // قم بتعيين السياسة الحالية public public setstrategy (isTrategy strategy) {this.strategy = strategy ؛ } // استخدم الإستراتيجية لحساب السعر المزدوج العام (الاستهلاك المزدوج) {// استخدم استراتيجية ترويج للمنتجات المحددة للحصول على كمية الاستهلاك الفعلية doubleprice = this.strategy.realprice (consumeprice) ؛ // تنسيق الرقم 1 بعد النقطة العشرية ، أي: دقيقة للزاوية BigDecimal Bd = new BigDecimal (RealPrice) ؛ bd = bd.setscale (1 ، bigdecimal.round_down) ؛ return bd.doublevalue () ؛ }}3.6 عميل التسوق والاستهلاك للمستهلكين
حزمة com.demo ؛ استيراد java.util.random ؛/** * تطبيق العميل * * Author * */Clists Client {/** * param args */public static void main (string [] args) {// إنشاء مثيل لكائن البيئة لأعلى ولأسفل/سياق السياق الجديد = سياق جديد () ؛ // كائن العدد العشوائي عشوائي = جديد عشوائي () ؛ لـ (int i = 0 ؛ i <10 ؛ i ++) {// كيفية إنشاء أرقام عشوائية تحدد استراتيجية الترويج لاستخدام int x = random.nextint (3) ؛ // يتم إنشاء سعر المستهلك أيضًا بأرقام عشوائية (لا يمكن أن يكون 0) الاستهلاك المزدوج = 0 ؛ بينما ((consumeprice = random.nextint (2000)) == 0) {} double realPrice = ConsumptePrice ؛ Switch (x) {case 0: // 20 ٪ Off Products // context.setrateTygy (new rebatestrategy ()) ؛ RealPrice = ConsumptionPrice * 0.8 ؛ استراحة؛ الحالة 1: // 20 ٪ من المنتجات أعلى من 200 // context.Setrategy (الترويجي الجديد التريئة ()) ؛ if (consumeprice> 200) {RealPrice = 200 + (ConsumePrice - 200) * 0.8 ؛ } استراحة؛ الحالة 2: // 200 قبالة للمشتريات أكثر من 1000 // context.SetStrategy (جديد تخفيض ()) ؛ if (consumeprice> = 1000) {realPrice = ConsumptionPrice - 200 ؛ } استراحة؛ } system.out.print ("【" + (x == 0؟ System.out.println ("السعر الأصلي:" + استهلاكها + " - السعر بعد الخصم:" + RealPrice) ؛ }}}4 نتائج التشغيل
【200 OFF للشراء أكثر من 1000】 المنتج: السعر الأصلي: 908.0 - السعر بعد الخصم: 908.0
【200 OFF للشراء أكثر من 1000】 المنتج: السعر الأصلي: 1129.0 - السعر بعد الخصم: 929.0
【200 OFF للشراء أكثر من 1000】 المنتج: السعر الأصلي: 829.0 - السعر بعد الخصم: 829.0
[20 ٪ OFF] المنتج: السعر الأصلي: 518.0 - السعر بعد الخصم: 414.40000000000003
【200 OFF للشراء أكثر من 1000】 المنتج: السعر الأصلي: 1230.0 - السعر بعد الخصم: 1030.0
【20 ٪ خصم】 المنتج: السعر الأصلي: 106.0 - السعر بعد الخصم: 84.800000000000011
【200 OFF للشراء أكثر من 1000】 المنتج: السعر الأصلي: 1134.0 - السعر بعد الخصم: 934.0
[20 ٪ خصم للأجزاء فوق 200] المنتج: السعر الأصلي: 664.0 - السعر بعد الخصم: 571.2
【200 OFF للشراء أكثر من 1000】 المنتج: السعر الأصلي: 564.0 - السعر بعد الخصم: 564.0
【200 OFF للشراء أكثر من 1000】 المنتج: السعر الأصلي: 730.0 - السعر بعد الخصم: 730.0
ثلاثة مبادئ لتصميم هذا النمط
1 مبدأ "Open-Close"
2 مبدأ المسؤولية الفردية
أربع مناسبات الاستخدام
1 عندما تكون سلوكيات الأداء لفئات متعددة مختلفة ، ومن الضروري تحديد سلوك التنفيذ المحدد بشكل ديناميكي في وقت التشغيل.
2 من الضروري استخدام استراتيجيات مختلفة في مواقف مختلفة ، أو قد يتم تنفيذ الاستراتيجيات بطرق أخرى في المستقبل.
3 عندما يكون من الضروري إخفاء تفاصيل التنفيذ لاستراتيجيات محددة ، تكون كل استراتيجية محددة مستقلة عن بعضها البعض.
4 عند حدوث سلوكيات متعددة في فئة ويتم استخدام فروع مشروطة متعددة في عملية للحكم على استخدام سلوكيات متعددة ، يمكن استخدام نمط السياسة لزرع تصرفات كل فرع مشروط في استراتيجية محددة.
مخطط فئة ثابت
لمزيد من المحتوى المتعلق بـ Java ، يمكن للقراء المهتمين بهذا الموقع عرض الموضوعات: "مقدمة والبرمجة التعليمية المتقدمة حول البرمجة الموجهة إلى Java" ، و "البرنامج التعليمي حول بنية بيانات Java" و "خوارزمية" و "ملخص مهارات تشغيل Java" ، و "ملخص مهارات تشغيل Java" و "ملخصات Java Cate".
آمل أن يكون هذا المقال مفيدًا لبرمجة Java للجميع.