User Tools

Site Tools


oop:observer_pattern

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
oop:observer_pattern [2026/05/24 06:45] – created gthanosoop:observer_pattern [2026/05/25 14:57] (current) gthanos
Line 3: Line 3:
 Το Observer Pattern (Πρότυπο Παρατηρητή) είναι ένα από τα πιο διαδεδομένα πρότυπα στη σχεδίαση λογισμικού. Χρησιμοποιείται για να ορίσει μια σχέση ένα-προς-πολλά μεταξύ αντικειμένων, έτσι ώστε όταν η κατάσταση ενός αντικειμένου αλλάζει, όλα τα εξαρτημένα αντικείμενα να ενημερώνονται αυτόματα. Το Observer Pattern (Πρότυπο Παρατηρητή) είναι ένα από τα πιο διαδεδομένα πρότυπα στη σχεδίαση λογισμικού. Χρησιμοποιείται για να ορίσει μια σχέση ένα-προς-πολλά μεταξύ αντικειμένων, έτσι ώστε όταν η κατάσταση ενός αντικειμένου αλλάζει, όλα τα εξαρτημένα αντικείμενα να ενημερώνονται αυτόματα.
  
-Πρόκειται για ένα subscription based σύστημα, όπου σε κάθε αλλαγή του observable αντικειμένου ενημερώνονται όλοι όσοι έχουν κάνει εγγραφή, ώστε να ενημερώνονται για τις αλλαγές+Πρόκειται για ένα subscription based σύστημα, όπου σε κάθε αλλαγή του observable αντικειμένου ενημερώνονται για την αλλαγή όλα τα αντικείμενα που έχουν κάνει εγγραφή. 
  
 Τα βασικά συστατικά του προτύπου είναι τα εξής: Τα βασικά συστατικά του προτύπου είναι τα εξής:
Line 21: Line 21:
 Παρακάτω δίνεται μία γενική σχηματική υλοποίηση του Observer Pattern σε γλώσσα Java.  Παρακάτω δίνεται μία γενική σχηματική υλοποίηση του Observer Pattern σε γλώσσα Java. 
  
-<code java>+<code java ObserverSchema.java>
 // ========================================== // ==========================================
 // 1. ΤΟ INTERFACE ΤΟΥ ΠΑΡΑΤΗΡΗΤΗ (OBSERVER) // 1. ΤΟ INTERFACE ΤΟΥ ΠΑΡΑΤΗΡΗΤΗ (OBSERVER)
Line 102: Line 102:
  
 ===== Παράδειγμα - Stock Observer ===== ===== Παράδειγμα - Stock Observer =====
 +
 +Παρακάτω δίνουμε ένα παράδειγμα που προσομοιάζει ένα σύστημα παρατήρησης τιμών μετοχών. Έχουμε μία σειρά από παραητήρητές (email observer, mobile app observer), οι οποίοι ενημερώνονται μέσω της κλάσης ''TechMarket'' (υλοποιεί το interface ''Stock Subject''). Παρατηρήστε ότι σε κάθε αλλαγή τιμής ενημερώνονται μόνο οι Observers που έχουν κάνει attach στο TechMarket και ότι το TechMarket δεν γνωρίζει τίποτα για την εσωτερική δομή του κάθε Observer, εκτός από το ότι θα τον ενημερώσει μέσω της μεθόδου ''update''.
  
 <code java ObservableMarket.java> <code java ObservableMarket.java>
Line 151: Line 153:
     @Override     @Override
     public void update(String stockName, double price) {     public void update(String stockName, double price) {
-        System.out.println("[Mobile App] Ειδοποίηση: Η " + stockName + " έφτασε τα " + price + "€");+        System.out.println("[Mobile App] Ειδοποίηση: Η τιμή της " + stockName + " ενημερώνθηκε σε " + price + "€");
     }     }
 } }
Line 158: Line 160:
     @Override     @Override
     public void update(String stockName, double price) {     public void update(String stockName, double price) {
-        System.out.println("[Email] Αποστολή στο χρήστη: Η μετοχή " + stockName + " ενημερώθηκε στα " + price + "€");+        System.out.println("[Email] Ενημέρωση: Η τιμή της " + stockName + " ενημερώθηκε σε " + price + "€");
     }     }
 } }
Line 183: Line 185:
 } }
 </code> </code>
- 
- 
oop/observer_pattern.1779605136.txt.gz · Last modified: 2026/05/24 06:45 by gthanos