تصف هذه المقالة تعريف واستخدام أنماط سياسة Java. شاركه للرجوع إليه ، على النحو التالي:
1. التعريف:
حدد سلسلة من الخوارزميات ، وتغليفها واحدًا تلو الآخر ، وتمكينها من استبدالها ببعضها البعض.
2. المزايا:
(1) يتم ربط السياق والاستراتيجية المحددة بشكل فضفاض ، وبالتالي يحتاج السياق فقط إلى معرفة المثيل الذي تريد استخدامه لتنفيذ فئة واجهة الإستراتيجية ، ولكن لا يحتاج إلى معرفة الفئة التي هي.
(2) يفي نموذج السياسة بمبدأ الافتتاح والإغلاق. عند إضافة فئة محددة جديدة ، ليست هناك حاجة لتعديل رمز فئة السياق. يمكن أن يشير السياق إلى مثيل للسياسة المحددة الجديدة.
ثالثا. مثال:
فيما يلي شرح مفصل لنموذج الإستراتيجية من خلال سؤال.
المتطلبات التجريبية:
شياو دينغ هو مبرمج في علي بابا. هذا اليوم أعطاه مدير المشروع تعريفًا في الفصل
عامل الطبقة العامة {int id ؛ اسم السلسلة عمري int ؛}رأى Xiao Ding أن هذا لم يكن تعريف العامل ، بما في ذلك معرف الأرقام ، والاسم ، والعمر ، إلخ.
قال المدير ، أحتاج منك أن تكتب وظيفة يمكنها العثور على أقدم مجموعة من العمال. إعلان الطريقة هو (أو شيء من هذا القبيل):
عامل البحث العامل (قائمة <Corner> العمال) ؛
List<Worker> workers هم بيانات هذه الدفعة من العمال. إذا تم العثور على أقدم عامل ، فسيتم إرجاع كائن العامل. إذا لم يكن لدى العمال العقد ، فالتراجع.
إجابة:
1. الاستراتيجية
في وضع السياسة ، تسمى هذه الواجهة WorkStrategy (في أسئلة محددة ، يمكن تسمية هذا الاسم وفقًا لأسئلة محددة) ، والرمز كما يلي:
WorkStrategy.java
استيراد java.util.list ؛ الواجهة العامة WorkStrategy {العامل العام ageaveriver (قائمة <lorker> قائمة) ؛}2. السياق
السياسة الموجهة نحو السياق هي فئة موجهة نحو الواجهة ؛ الرمز كما يلي:
Maxage.java
استيراد java.util.list ؛ الطبقة العامة maxage {worktrategy workstrategy ؛ public void setworkstrategy (WorkStrategy workstrategy) {this.workStrategy = WorkStratgy ؛ } العامل العام getFindMax (قائمة <worker> list) {if (worktrategy! = null) return worktrategrategy.AgeaBevering (list) ؛ آخر {return null ؛ }}}3. استراتيجيات محددة
تتمثل الاستراتيجية المحددة في تنفيذ فئة واجهة WorkTrategy ، أي العامل المجردة في الواجهة يجب إعادة كتابة.
Ageaverage (قائمة <worker> قائمة)
الرمز كما يلي:
strategymaxage.java
استيراد java.util.list ؛ استراتيجية الطبقة العامة تنفذ workstrategy {Override العامل العام ageaveriver (قائمة <worker> قائمة) {int fs [] = new int [list.size ()] ؛ int maxage = 0 ؛ لـ (int j = 0 ؛ j <list.size () ؛ j ++) {fs [j] = list.get (j) .getage () ؛ if (fs [maxage] <= fs [j]) {maxage = j ؛ }} return list.get (maxage) ؛ }}4. استخدام وضع السياسة
application.java
استيراد java.util.arraylist ؛ استيراد java.util.list ؛ تطبيق الفئة العامة {public static void main (string [] args) {list <worker> list = new ArrayList <> () ؛ list.add (عامل جديد (1 ، "Zhang San" ، 30)) ؛ list.add (عامل جديد (2 ، "Li Si" ، 40)) ؛ list.add (عامل جديد (3 ، "وانغ وو" ، 33)) ؛ Maxage Findage = new Maxage () ؛ findage.setWorkStrategy (استراتيجية جديدة ()) ؛ عامل findw = findage.getFindMax (قائمة) ؛ System.out.println ("نتائج اختبار wulin.com:") ؛ System.out.println ("أقدم عامل:"+findw.getid ()+""+findw.getName ()+""+findw.getage ()) ؛ }} عامل الفئة {int id ؛ اسم السلسلة عمري public int getId () {return id ؛ } public void setId (int id) {this.id = id ؛ } السلسلة العامة getName () {return name ؛ } public void setName (اسم السلسلة) {this.name = name ؛ } public int getage () {return Age ؛ } public void setage (int age) {this.age = age ؛ } العامل العام (int id ، اسم السلسلة ، int age) {super () ؛ this.id = id ؛ this.name = name ؛ this.age = العمر ؛ } العامل العام () {super () ؛ // TODO CONTRUCTOR COPTING}}}}5. نتائج التشغيل:
لمزيد من المحتوى المتعلق بـ Java ، يمكن للقراء المهتمين بهذا الموقع عرض الموضوعات: "بنية بيانات Java وبرنامج تعليمي الخوارزمية" ، "ملخص Tips Java Operation DOM" ، "ملخص ملف Java ونصائح تشغيل الدليل" و "ملخص نصائح Java Cache Operation Tips"
آمل أن يكون هذا المقال مفيدًا لبرمجة Java للجميع.