zoukankan      html  css  js  c++  java
  • 观察者设计模式

      观察者设计模式是一个非常有意思的设计模式,可以理解为一触即发。

      如果要想实现观察者设计模式需要以下的两个类:

        观察者:java.util.Observer;

        被观察者:java.util.Observable

    范例:实现观察者

     1 package cn.Tony.demo;
     2 
     3 import java.util.Observable;
     4 import java.util.Observer;
     5 
     6 class Person implements Observer{//这些是所有的观察者
     7     @Override
     8     public void update(Observable o, Object arg) {//一旦你关注的事情发生了变化
     9         if(o instanceof House) {
    10             if(arg instanceof Double) {
    11                 System.out.println("【人们关注房子】房价上涨,新价格:"+arg);
    12             }
    13         }
    14     }
    15 }
    16 class House extends Observable{//被观察者
    17     private double price;
    18     public House(double price) {
    19         this.price=price;
    20     }
    21     public void setPrice(double price) {
    22         if(price>this.price) {//价格上涨了
    23             super.setChanged();//现在关注的内容改变
    24             super.notifyObservers(price);//唤醒所有的观察者
    25         }
    26         this.price=price;
    27     }
    28 }
    29 public class TestDemo {
    30     public static void main(String[] args) throws Exception {
    31         Person pA=new Person();
    32         Person pB=new Person();
    33         Person pC=new Person();
    34         House house=new House(80000.00);
    35         house.addObserver(pA);//必须手工设置观察者
    36         house.addObserver(pB);//必须手工设置观察者
    37         house.addObserver(pC);//必须手工设置观察者
    38         house.setPrice(150000.00);
    39     }
    40 }

      这种设计模式在现在的开发中已经意义不大了

      理解一种设计模式。观察者是一个设计模式。

  • 相关阅读:
    向多页TABLE中插入数据时,新增行总是在当前页的最后一行
    本地Run Page时报检测到意外的 URL 参数,它将被忽略。
    本地Jdev Run PG报严重: Socket accept failed错误
    手动编译JAVA类
    动态创建OATipBean
    OAF TABLE中第一列添加事件不生效
    QML的Window与ApplicationWindow
    android studio快捷键
    Android Studio报错view is not constrained
    自定义信号
  • 原文地址:https://www.cnblogs.com/Tony98/p/10500261.html
Copyright © 2011-2022 走看看