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);
        }
    }
  • 相关阅读:
    tx:advice标签简介
    spring tx:advice 和 aop:config 配置事务
    java web开发 高并发处理
    log4j输出多个自定义日志文件,动态配置路径
    接口(interface) 可以 new()吗???~
    观察者模式
    BLOB的读写操作
    JAVA Timer定时器使用方法
    判断webservice是否可用
    二十三、oracle pl/sql分类三 包
  • 原文地址:https://www.cnblogs.com/fuyuanming/p/5792443.html
Copyright © 2011-2022 走看看