观察者模式UML图与源代码

以下是UML图(注:Obsever接口,Observable类是java.util包下文件):


观察者模式UML图与源代码_第1张图片
 

源代码:Product

 

Java代码    收藏代码
  1. import java.util.Observable;  
  2.   
  3. public class Product extends Observable{  
  4.   
  5.     private String nameString;  
  6.     private double price;  
  7.     public Product(String nameString, double price) {  
  8.         super();  
  9.         this.nameString = nameString;  
  10.         this.price = price;  
  11.     }  
  12.     public void setNameString(String nameString) {  
  13.         if(!this.nameString.equals(nameString)){  
  14.         this.nameString = nameString;  
  15.         setChanged();  
  16.         }"white-space: pre;">         
  17.                 //Observable的方法  
  18.         notifyObservers(nameString);  
  19.     }  
  20.     public void setPrice(double price) {  
  21.         if (this.price!=price) {  
  22.             this.price = price;  
  23.             setChanged();  
  24.         }  
  25.         notifyObservers(price);  
  26.     }  
  27. }  
  28.   

 

 NameObserver类:

 

Java代码    收藏代码
  1. import java.util.Observable;  
  2. import java.util.Observer;  
  3.   
  4. public class NameObserver implements Observer {  
  5.   
  6.     public void update(Observable arg0, Object arg1) {  
  7.         if (arg1 instanceof String) {  
  8.             System.out.println("观察物" + arg0 + "的名称改为:" + arg1);  
  9.         }  
  10.   
  11.     }  
  12. }  

 

 PriceObserver类:

 

Java代码    收藏代码
  1. import java.util.Observable;  
  2. import java.util.Observer;  
  3.   
  4. public class PriceObserver implements Observer {  
  5.   
  6.     public void update(Observable arg0, Object arg1) {  
  7.         if (arg1 instanceof Double) {  
  8.             System.out.println("观察物"+arg0+"的价格变化为"+arg1);  
  9.         }  
  10.     }  
  11.   
  12. }  

 

 Client类:

 

Java代码    收藏代码
  1. public class Client {  
  2.   
  3.     public static void main(String[] args) {  
  4.         Product product = new Product("电脑"2000);  
  5.         PriceObserver priceObserver = new PriceObserver();  
  6.         NameObserver nameObserver = new NameObserver();  
  7.         product.addObserver(nameObserver);  
  8.         product.addObserver(priceObserver);  
  9.         product.setNameString("笔记本电脑");  
  10.         product.setPrice(5000);  
  11.     }  
  12. }  

 

 运行结果截图:



你可能感兴趣的:(UML,设计模式)