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

     1 package com.gh.observer;
     2 import java.util.Observable;
     3 /**
     4  * 被观察者对象
     5  * 必须继承被观察者抽象类
     6  * @author ganhang
     7  *
     8  */
     9 public class Doll extends Observable{
    10     private int price;
    11     
    12     public int getPrice() {
    13         return price;
    14     }
    15 
    16     public void setPrice(int price) {
    17         this.price = price;
    18         this.setChanged();
    19         this.notifyObservers();
    20     }
    21     
    22 }
     1 package com.gh.observer;
     2 
     3 import java.util.Observable;
     4 import java.util.Observer;
     5 
     6 /**
     7  * 观察者对象
     8  * 必须实现观察者的接口
     9  * @author ganhang
    10  *
    11  */
    12 public class Person implements Observer{
    13     private String name;
    14     
    15     public Person(String name){
    16         this.name=name;
    17     }
    18     public void update(Observable o, Object arg) {
    19         if(o instanceof Doll){
    20             Doll doll=(Doll) o;
    21             System.out.println(name+"您关注的娃娃价格已经更新为"+doll.getPrice());
    22         }
    23     }
    24 
    25 }
    package com.gh.observer;
    /**
     * 观察者模式的测试
     * @author ganhang
     */
    public class test {
        public static void main(String[] args) {
            Person p=new Person("小白");
            Person p1=new Person("小黑");
            Doll doll=new Doll();
            doll.addObserver(p);//将观察者添加到被观察者的集合中
            doll.addObserver(p1);
            System.out.println("第一轮促销");
            doll.setPrice(1999);
            System.out.println("第二轮促销");
            doll.deleteObserver(p1);
            doll.setPrice(999);
        }
    }

    输出

    第一轮促销
    小黑您关注的娃娃价格已经更新为1999
    小白您关注的娃娃价格已经更新为1999
    第二轮促销
    小白您关注的娃娃价格已经更新为999

  • 相关阅读:
    7.Ubuntu16.04安装Jenkins
    5.在Gitlab创建一个基于Sping Boot Maven项目
    4.ubuntu 16.04.6 离线安装 Git
    CNN注意事项_七月算法5月深度学习班第5次课程笔记
    Github 文件选择性上传
    一个Velocity Template Language学习的框架
    设计模式学习之代理模式(Proxy)
    ibatis入门教程一
    SimpleDataFormat详解
    使用Qmake在树莓派上开发Opencv程序
  • 原文地址:https://www.cnblogs.com/ganhang-acm/p/5154377.html
Copyright © 2011-2022 走看看