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

    //被监听的类继承Observable类

    public class Product extends Observable{

      private String name;

      private float price;

      public void setName(String name){

        this.name = name;

        setChanged();

        notifyObservalble(name);

      }

      public String getName(){

        return name;

      }

      public void setPrice(float price){

        this.price = price;

        setChanged();

        notifyObservables(new Float(price));

      }

      public Float getPrice(){

        return price; 

      }

    }

    观察者实现Observer

    实现update方法

    //价格的观察者

    NameObserver类

    private String name;

    public void update(Observable o,Object arg){

      if(arg instanceof String){

        name = (String)arg;

        System.out.println("name change to:"+name);

      }

    }

    //价格的观察者

    PriceObserver类

    private Float price;

    public void update(Observable o,Object arg){

      if(arg instanceof String){

        price= (float)arg;

        System.out.println("name change to:"+price);

      }

    }

    测试类

    public static void main(String[] args){

      Product product = new Product();

      NameObserver nameObserver = new NameObserver();

      PriceObserver priceObserver = new PriceObserver();

      product.addObserver(nameObserver);

      product.addObserver(priceObserver);

      product.setName("apple");

      product.setPrice("3.0");

      product.notifyObservers();

    }

  • 相关阅读:
    Web开发之编码与解码、签名、加密与解密
    深入解析单例线程安全问题
    PL/SQL&存储过程||存储函数&触发器
    oracle
    子查询中的NULL问题
    springmvc适配器的应用
    MySQL
    Django rest framework(5)----解析器
    Django rest framework(4)----版本
    1. Django每日一码 之原生View源码
  • 原文地址:https://www.cnblogs.com/dcxz/p/3338878.html
Copyright © 2011-2022 走看看