interface AccountObserver{
   void update(ObserverArgs args);
   
}
public class ATM {
   AccountObserver accountObserver = null;
   public void withdraw(int data){
      accountObserver.Update(args);
   }}class Account{
   
}class sendEmail implements AccountObserver{   @Override
   public void Update(ObserverArgs args) {
      // TODO Auto-generated method stub
      
   }
   
}class ObserverArgs目前就是面向接口编程,ATM取钱后,可以通知手机,EMAIL,等各种观察者。

解决方案 »

  1.   

    http://hi.baidu.com/gabe2008/blog/item/a1dc3855c936cd5a564e0090.html
    说明图在上边的这个链接中,非常感谢。
      

  2.   


    package com.yaowei.test;import java.util.Observable;public class Obser {
    public static void main(String[]args) {
    Atm atm = new Atm();
    atm.addObserver(new Email());
    atm.addObserver(new Phone());
    atm.accountChange();
    }
    }
    class Email implements java.util.Observer {
    public void update(Observable o, Object arg) {
    if(o instanceof Atm) {
    System.out.println("email");
    }
    }
    }
    class Phone implements java.util.Observer {
    public void update(Observable o, Object arg) {
    if(o instanceof Atm) {
    System.out.println("phone");
    }
    }
    }
    class Atm extends java.util.Observable {
    public synchronized void accountChange() {
    System.out.println("acount change");
    setChanged();
    notifyObservers();
    }
    }java有现成的观察者模式,
    不如直接用
      

  3.   

    interface AccountObserver{
       void update(ObserverArgs args);
       
    }这就是ObserverArgs 是不是要另外再定义一个类,那么这也依赖了。
      

  4.   

    个人见解..//ATMObserverMode.javaimport java.util.*;public class ATMObserverMode{
    public static void main(String[] args){
    Account accountTest = new Account("accountTest",1000);
    CellphoneObserever CO = new CellphoneObserever();
    DisplayObserever DO = new DisplayObserever();
    EmailObserever EO = new EmailObserever();

    accountTest.addObserver(CO);
    accountTest.addObserver(DO);
    accountTest.addObserver(EO);

    accountTest.Deposit(500);
    accountTest.withdraw(1500);
    }
    }class Account extends Observable{
    private String Name = "";
    private int balance = 0;

    Account(String Name,int balance){
    this.Name = Name;
    this.balance = balance;
    }

    void Deposit(int money){
        balance+=money;
        setChanged();
        notifyObservers("账号: "+ Name
                 +"\t存入了: "+ money
                 +"\t余额: "+ balance);
    }
    void withdraw(int money){
        balance-=money;
        setChanged();
        notifyObservers("账号: "+ Name
                    +"\t取出了:"+ money
                    +"\t余额: "+ balance);
    }
    }class CellphoneObserever implements Observer{
        public void update(Observable obj,Object arg){
         System.out.println("-Cellphone Recieved-");
         System.out.println(arg);
         System.out.println();
        }
    }class DisplayObserever implements Observer{
        public void update(Observable obj,Object arg){
         System.out.println("-Display Recieved-");
         System.out.println(arg);
         System.out.println();
        }
    }class EmailObserever implements Observer{
        public void update(Observable obj,Object arg){
         System.out.println("-Email Recieved-");
         System.out.println(arg);
         System.out.println();
        }
    }
      

  5.   

    其实楼主看下java.util.Observable包就明白的了~~
    import java.util.*;public class ATMObserverMode{
        public static void main(String[] args){
            Account accountTest = new Account("accountTest",1000);
            CellphoneObserever CO = new CellphoneObserever();
            DisplayObserever DO = new DisplayObserever();
            EmailObserever EO = new EmailObserever();
            
            //添加观察者
            accountTest.addObserver(CO);
            accountTest.addObserver(DO);
            accountTest.addObserver(EO);
            
            //操作
            accountTest.Deposit(500);
            accountTest.withdraw(1500);
        }
    }class Account extends Observable{
        private String Name = ""; // 账户名
        private int balance = 0;  // 账户余额
        
        Account(String Name,int balance){
            this.Name = Name;
            this.balance = balance;
        }
        
        //存钱
        void Deposit(int money){
            balance+=money;
            //设置变化点
            setChanged();
            //通知观察者
            notifyObservers("账号: "+ Name
                            +"\t存入了: "+ money
                            +"\t余额: "+ balance);
        }
        void withdraw(int money){
            balance-=money;
            //设置变化点
            setChanged();
            //通知观察者
            notifyObservers("账号: "+ Name
                            +"\t取出了:"+ money
                            +"\t余额: "+ balance);
        }
    }class CellphoneObserever implements Observer{
        //实现update方法
        public void update(Observable obj,Object arg){
            System.out.println("-Cellphone Recieved-");
            System.out.println(arg);
            System.out.println();
        }
    }class DisplayObserever implements Observer{
        //实现update方法
        public void update(Observable obj,Object arg){
            System.out.println("-Display Recieved-");
            System.out.println(arg);
            System.out.println();
        }
    }class EmailObserever implements Observer{
        //实现update方法
        public void update(Observable obj,Object arg){
            System.out.println("-Email Recieved-");
            System.out.println(arg);
            System.out.println();
        }
    }