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

    package test.observer;
    
    public interface BankObserver {
        public void update(double amt);
    }
    package test.observer;
    
    /**
     * 银行客户
     * @author lenovo
     *
     */
    public class CustomerBank1 implements BankObserver{
        private String email;
        
        public String getEmail() {
            return email;
        }
    
        public void setEmail(String email) {
            this.email = email;
        }
        
        
    
        @Override
        public void update(double amt) {
            System.out.println("账户金额发生变动,发送邮件到"+email+",变动后金额为:"+amt);
        }
    }
    package test.observer;
    
    public class CustomerBank2 implements BankObserver{
        private String phone;
        
        public String getPhone() {
            return phone;
        }
        
        public void setPhone(String phone) {
            this.phone = phone;
        }
    
        @Override
        public void update(double amt) {
            System.out.println("账户金额发生变动,发送短信到"+phone+",变动后金额为:"+amt);
        }
        
    }
    package test.observer;
    
    /**
     * 银行客户
     * @author lenovo
     *
     */
    public class CustomerBank3 implements BankObserver{
        private String qq;
        
         
        
        
    
        public String getQq() {
            return qq;
        }
    
    
    
    
    
        public void setQq(String qq) {
            this.qq = qq;
        }
    
    
    
    
    
        @Override
        public void update(double amt) {
            System.out.println("账户金额发生变动,发送信息到qq:"+qq+",变动后金额为:"+amt);
        }
    }
    package test.observer;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * 银行账户
     * @author lenovo
     *
     */
    public class BankAccount {
        private String name;
        private double amt;
        private List<BankObserver> list=new ArrayList<BankObserver>();
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public double getAmt() {
            return amt;
        }
        
        public void add(BankObserver obj){
            list.add(obj);
        }
        
        public void remove(BankObserver obj){
            list.remove(obj);
        }
        
        public void setAmt(double amt) {
            this.amt = amt;
            for(int i=0;i<list.size();i++){
                BankObserver bo=list.get(i);
                bo.update(amt);
            }
        }
    
    }
    package test.observer;
    
    /**
     * 客户端
     * @author lenovo
     *
     */
    public class Client {
        public static void main(String[] argv){
            /**
             * 银行发钱1000块工资,通知到银行客户的邮件
             */
            BankAccount bankAccount=new BankAccount();
            
            CustomerBank1 cb=new CustomerBank1();
            cb.setEmail("**********@qq.com");
            bankAccount.add(cb);
            
            
            CustomerBank2 cb2=new CustomerBank2();
            cb2.setPhone("00000000000000");
            bankAccount.add(cb2);
            
            CustomerBank3 cb3=new CustomerBank3();
            cb3.setQq("00000000000000");
            
            bankAccount.add(cb3);
            
            bankAccount.setAmt(1000);
        }
    }
  • 相关阅读:
    jQuery 基本选择器
    JavaScriptif while for switch流程控制 JS函数 内置对象
    JavaScrip基本语法
    数据库 存储引擎 表的操作 数值类型 时间类型 字符串类型 枚举集合 约束
    数据库基础知识 管理员 用户登录授权的操作
    粘包的产生原理 以及如何解决粘包问题
    socket TCP DPT 网络编程
    2018年年终总结
    Android技术分享
    No accelerator found
  • 原文地址:https://www.cnblogs.com/fuyuanming/p/5792443.html
Copyright © 2011-2022 走看看