andari3107

observer pattern

Mar 4th, 2019
56
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 2.85 KB | None | 0 0
  1. 1.What is Observer pattern?
  2. => Pola Pengamat mendefinisikan ketergantungan satu ke banyak di antara objek sehingga satu objek berubah status, semua tanggungannya diberitahukan dan diperbarui secara otomatis.
  3. 2.What are their benefit?
  4. => Menyediakan desain yang digabungkan secara longgar antara objek yang berinteraksi. Benda yang digabungkan longgar fleksibel dengan perubahan persyaratan. Di sini lepas kopling berarti bahwa benda yang berinteraksi harus memiliki informasi yang kurang tentang satu sama lain.
  5. 3.What are their drawback?
  6. => Kebocoran memori yang disebabkan oleh masalah pendengar yang tidak aktif karena register eksplisit dan tidak terdaftarnya pengamat.
  7. 4.When to use it at best?
  8. => ketika banyak objek bergantung pada keadaan satu objek karena menyediakan desain yang rapi dan teruji untuk hal yang sama.
  9. 5.When to NOT use it?
  10. => ketika banyak objek tidak bergantung pada keadaan satu objek.
  11.  
  12.  
  13. class CricketData{
  14.    
  15.     int runs, wickets;
  16.     float overs;
  17.     CurrentScoreDisplay currentScoreDisplay;
  18.     AverageScoreDisplay averageScoreDisplay;
  19.    
  20.     public CricketData(CurrentScoreDisplay currentScoreDisplay, AverageScoreDisplay averageScoreDisplay) {
  21.         this.currentScoreDisplay = currentScoreDisplay;
  22.         this.averageScoreDisplay = averageScoreDisplay;
  23.     }
  24.     private int getLatestRuns() {
  25.         return 90;
  26.     }
  27.     private int getLatestWickets() {
  28.         return 2;
  29.     }
  30.     private float getLatestOvers() {
  31.         return (float)10.2;
  32.     }
  33.     public void dataChanged() {
  34.        
  35.         runs =  getLatestRuns();
  36.         wickets = getLatestWickets();
  37.         overs = getLatestOvers();
  38.        
  39.         currentScoreDisplay.update(runs,wickets,overs);
  40.         averageScoreDisplay.update(runs,wickets,overs);
  41.     }
  42. }
  43.  
  44. class AverageScoreDisplay{
  45.     private float runRate;
  46.     private int predictedScore;
  47.    
  48.     public void update(int runs, int wickets, float overs) {
  49.         this.runRate = (float)runs/overs;
  50.         this.predictedScore = (int) (this.runRate * 50);
  51.         display();
  52.     }
  53.     public void display() {
  54.         System.out.println("Average Score Display: ");
  55.         System.out.println("Run Rate: " + runRate);
  56.         System.out.println("PredictedScore: " + predictedScore);
  57.     }
  58. }
  59.  
  60. class CurrentScoreDisplay{
  61.     private int runs, wickets;
  62.     private float overs;
  63.    
  64.     public void update(int runs,int wickets,float overs) {
  65.         this.runs = runs;
  66.         this.wickets =wickets;
  67.         this.overs = overs;
  68.         display();
  69.     }
  70.     public void display() {
  71.         System.out.println("Current Score Display:");
  72.         System.out.println("Runs: "+ runs);
  73.         System.out.println("Wickets: " + wickets);
  74.         System.out.println("Overs: "+ overs);
  75.        
  76.     }
  77. }
  78.  
  79. class ObserverPattern{
  80.     public static void main(String[]args) {
  81.        
  82.         AverageScoreDisplay averageScoreDisplay = new AverageScoreDisplay();
  83.         CurrentScoreDisplay currentScoreDisplay = new CurrentScoreDisplay();
  84.         CricketData cricketData = new CricketData(currentScoreDisplay , averageScoreDisplay);
  85.        
  86.         cricketData.dataChanged();
  87.     }
  88. }
Add Comment
Please, Sign In to add comment