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,等各种观察者。
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,等各种观察者。
说明图在上边的这个链接中,非常感谢。
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有现成的观察者模式,
不如直接用
void update(ObserverArgs args);
}这就是ObserverArgs 是不是要另外再定义一个类,那么这也依赖了。
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();
}
}
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();
}
}