تصف هذه المقالة استخدام وضع المراقب لتنفيذ وظيفة تحذير درجة الحرارة العالية لمكتب الأرصاد الجوية. شاركه للرجوع إليه ، على النحو التالي:
1. تعريف نمط
وضع المراقب ، المعروف أيضًا باسم وضع النشر/الاشتراك. يحدد نمط المراقب التبعية بين الكائنات. عندما تتغير حالة الكائن ، يتم إخطار جميع الكائنات التي تعتمد عليه وتحديثها تلقائيًا.
2. أمثلة على النموذج
1 تحليل نمط
نحن نقترض تحذير مكتب الأرصاد الجوية العالية لتوضيح هذا النموذج.
2 مخطط الفئة الثابتة نمط المراقب
3 أمثلة رمز
3.1 Observer Interface-iobserver
package com.demo.observer ؛ import com.demo.subject.isubject ؛/** * Observer Interface * Author * */public interface iobserver {// update method update public update (isubject subsic) ؛}3.2 موضوع واجهة Isubject
package com.demo.subject ؛ import com.demo.observer.iobserver ؛/** * واجهة الموضوع (المراقب) * * author * */واجهة عامة isubject {/** * إضافة مراقب * * param observer * return */public boolean add (iobserver comperver) ؛ / ** * حذف المراقب * * param observer * return */ public boolean إزالة (iobserver observer) ؛ / *** إخطار جميع المراقبين بتحديث البيانات*/ public void notifyAllObserver () ؛ / ** * قم بتعيين قيمة درجة الحرارة * * param درجة الحرارة */ public void settoumperature (درجة حرارة التعويم) ؛ / ** * احصل على تحذير من درجة الحرارة * * @RETURN */ السلسلة العامة pregurdaterereport () ؛}3.3 تنفيذ موضوع ما في مواضيع محددة
package com.demo.subject ؛ import java.util.iterator ؛ import java.util.vector ؛ import com.demo.observer.iobserver ؛/** * effern أيام متتالية. * * (2) إشارة تحذير برتقالية عالية درجة الحرارة * * المعيار: سترتفع درجة الحرارة القصوى إلى أعلى من 37 ℃ في غضون 24 ساعة. * * (3) إشارة تحذير حمراء عالية درجة الحرارة * * المعيار: سترتفع الحد الأقصى لدرجة الحرارة إلى ما فوق 40 ℃ خلال 24 ساعة. */ درجة حرارة العائمة الخاصة ؛ // مستوى الإنذار المبكر سلسلة التحذير الخاصة ؛ // حفظ قائمة المراقبين المتجه النهائي الخاص <Iobserver> متجه ؛ / *** إنشاء طريقة تهيئة قائمة المراقبين*/ public موضوع () {vector = new Vector <IobServer> () ؛ } / *** إضافة مراقب* / إضافة منطقية عامة (iobserver observer) {if (observer! = null &&! vector.contains (observer)) {return vector.add (observer) ؛ } إرجاع خطأ ؛ } / *** إزالة المراقب* / إزالة منطقية عامة (iobserver observer) {return vector.remove (observer) ؛ } / *** إخطار جميع المراقبين بتحديث البيانات* / public void notifyAllObserver () {system.out.println ("============= يطلق قسم الأرصاد درجة حرارة عالية" + this.warninglevel + "الإنذار! ============) (iterator.hasnext ()) {(iterator.next ()). التحديث (هذا) ؛ "الأصفر" ؛ الفراغ (درجة حرارة التعويم) {this.temperature = this.invoke () ؛3.4 مراقب الشخصي personobserver
package com.demo.observer ؛ استيراد com.demo.subject.isubject ؛/** * مراقب المستخدم الفردي * Auuthor * */public class personobserver يطرف iobserver {public void update (isubject tource) {system.out.println ( }}3.5 الحكومية المراقب في الحزن
package com.demo.observer ؛ استيراد com.demo.subject.isubject ؛/** * مراقب المستخدم الحكومي * Auuthor * */Public Class GovernmentObserver Passionments iobserver {public void update (isUbject stuffic) }}3.6 CompanyObserver
package com.demo.observer ؛ import com.demo.subject.isubject ؛/** * Enterprise and Institutions Observer * @Author * */public class companyObserver تقوم بتنفيذ iobserver {trufact {isubject tource) {system.out.println ( }}3.7 دع النظام يبدأ في تشغيل عميل
package com.demo ؛ import java.util.random ؛ import com.demo.observer.companyobserver ؛ import com.demo.observer.governmentObserver ؛ import com.demo Author * */Clist Client Client {/** * param args */public static void main (string [] args) {// إنشاء موضوع موضوع isUBject = new tource () ؛ // إضافة مراقب للمؤسسة والمؤسسة الموضوع. Add (NewObserver ()) ؛ // إضافة مراقب لمستخدم الحكومة. Add (New GuetalServer ()) ؛ // إضافة مراقب للمستخدم الفردي. add (new PersonObserver ()) ؛ عشوائي عشوائي = جديد عشوائي () ؛ int i = 0 ؛ بينما (++ I <10) {// قم بتعيين think thanp.settemperature (random.nextint (45)) ؛ }}}4 نتائج التشغيل
======== يصدر قسم الأرصاد الجوية الإنذار الأصفر ارتفاع درجة الحرارة! ======
تتلقى المؤسسات والمؤسسات تحذيرًا مرتفعًا في درجات الحرارة: درجة الحرارة: 35.0
تلقت الإدارات الحكومية تحذيرًا بدرجة حرارة عالية: درجة الحرارة: 35.0
يتلقى الأفراد تحذيرًا مرتفعًا لدرجة الحرارة: درجة الحرارة: 35.0
======== يصدر قسم الأرصاد الجوية الإنذار الأحمر لدرجة الحرارة المرتفعة! ======
تتلقى المؤسسات والمؤسسات تحذيرًا مرتفعًا في درجات الحرارة: درجة الحرارة: 43.0
تلقت الإدارات الحكومية تحذيرًا مرتفعًا في درجات الحرارة: درجة الحرارة: 43.0
يتلقى الأفراد تحذيرًا مرتفعًا في درجات الحرارة: درجة الحرارة: 43.0
======== يصدر قسم الأرصاد الجوية إنذارًا برتقاليًا مرتفعًا في درجة الحرارة! =======
تتلقى المؤسسات والمؤسسات تحذيرًا بدرجة حرارة عالية: درجة الحرارة: 37.0
تلقت الإدارات الحكومية تحذيرًا بدرجة حرارة عالية: درجة الحرارة: 37.0
يتلقى الأفراد تحذيرًا مرتفعًا لدرجة الحرارة: درجة الحرارة: 37.0
3. مبادئ تصميم هذا النموذج
1 مبدأ "مفتوح المغلق"
2 مبدأ المسؤولية الفردية
3. مبدأ انعكاس التبعية
4. استخدام المناسبات
1 عندما يكون للنموذج التجريدي جانبان ، يعتمد أحدهما على الآخر ، ويجب تغليفه في كائنات مستقلة وتغييره بشكل مستقل وتعدد بعضهما البعض.
2 عندما يتطلب تغيير كائن ما في نظام تغيير محتوى الكائنات الأخرى في نفس الوقت ، لكنك لا تعرف عدد الكائنات التي يجب تغييرها.
3 عندما يجب إخطار تغيير الكائن إلى كائنات أخرى لإجراء تغييرات مماثلة ، ولكن لا يمكن تحديد من يتم إخطار الكائن.
5. "سحب البيانات" مخطط فئة ثابتة
يعني ما يسمى "دفع البيانات" أنه عندما يتغير الكائن المرصود ، يتم تمرير البيانات ذات الصلة إلى المراقب من خلال المعلمات ، والتي تشكل المراقب "دفع البيانات" إلى المراقب. مخطط الطبقة الثابتة على النحو التالي:
6. "سحب البيانات" مخطط فئة ثابتة
ما يسمى "بيانات السحب" ، يحتوي كائن المراقب على مرجع إلى مثيل الكائن الذي يتم ملاحظته. عندما يتغير الكائن الذي يتم ملاحظته ، لن يتم تمرير أي بيانات إلى المراقب. يحصل المراقب بنشاط على البيانات ذات الصلة بناءً على مرجع الكائن الذي يتم ملاحظته. هذا يشكل المراقب بنشاط "يسحب البيانات" من الكائن الذي يتم ملاحظته. مخطط الطبقة الثابتة على النحو التالي:
لمزيد من المحتوى المتعلق بـ Java ، يمكن للقراء المهتمين بهذا الموقع عرض الموضوعات: "مقدمة والبرمجة التعليمية المتقدمة حول البرمجة الموجهة إلى Java" ، و "البرنامج التعليمي حول بنية بيانات Java" و "خوارزمية" و "ملخص مهارات تشغيل Java" ، و "ملخص مهارات تشغيل Java" و "ملخصات Java Cate".
آمل أن يكون هذا المقال مفيدًا لبرمجة Java للجميع.