Quantcast
Channel: CSDN博客推荐文章
Viewing all articles
Browse latest Browse all 35570

java学习之路----设计模式----观察者模式

$
0
0
java中提供了Observale类和Observer接口,使用它们就可以完成观察者模式。。


观察者模式就是:一个状态变化,所有观察这个状态的观察者都知道了。。
          例如:房价,一旦房价变了,所有购房者(观察者)都知道了。。。


public interface Observer {
  
    void update(Observable o, Object arg);
}

这个接口中只有一个方法。。。就是update
class House extends Observable{
      private float price ;
     
     
     
      public House( float price) {
           this .price = price;
     }

      public float getPrice() {
          return price;
     }

      public void setPrice( float price) {
          super.setChanged();//设置变化点
           super .notifyObservers(price); //通知所有观察者价格变化
          this.price = price;
          
     }

     @Override
     public String toString() {
          
          return "价格为" +this.price;
     }
     

     
}

class HousePriceObserver implements Observer{
          private String name;
          

     public HousePriceObserver(String name) {
              this.name = name;
          }


     public void update(Observable o, Object arg) {
     
          if(arg instanceof Float){
              System.out.print(this.name+"观察到价格的变化为:");
               System.out.println(((Float)arg).floatValue());
          }
     }
     
}


public class ObservlableDemo {
     
     public static void main(String[] args) {
          House house= new House(1000000);
          
          HousePriceObserver h= new HousePriceObserver("A" );
          
          HousePriceObserver h1= new HousePriceObserver("B" );
          
          HousePriceObserver h2= new HousePriceObserver("C" );
          house.addObserver(h); //加入观察者
          
          house.addObserver(h1);
          
          house.addObserver(h2);
          
          System. out .println(house);
          
          house.setPrice(888888);
          
          System. out .println(house);
          
          
     }

     
}

结果:
价格为1000000.0
C观察到价格的变化为:888888.0
B观察到价格的变化为:888888.0
A观察到价格的变化为:888888.0
价格为888888.0
























作者:likeaijiaqi 发表于2013-11-22 23:40:41 原文链接
阅读:53 评论:0 查看评论

Viewing all articles
Browse latest Browse all 35570

Trending Articles



<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>