设计模式-观察者模式

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);
    }
}
原文地址:https://www.cnblogs.com/fuyuanming/p/5792443.html