观察者模式

canca17年前 (2007-03-26)设计模式276
//观察者模式
//CopyRight(C) CAnca software Office.2006
//Created by CAnca.
import java.util.*;
public class ObserverMode{
 public static void main(String[] args){
  // Configure Observer pattern 
  concreteSubject s = new concreteSubject();
      s.Attach(new concreteObserver(s,"X")); 
       s.Attach(new concreteObserver(s,"Y")); 
       s.Attach(new concreteObserver(s,"Z")); 
      
       // Change subject and notify observers  
       s.setSubjectState("ABC"); 
       s.DIYnotify(); 
 }
}
//Subject
abstract class Subject{
 private ArrayList observers = new ArrayList();
 public void Attach(Observer observer){
  this.observers.add(observer);
 }
 public void Detach(Observer observer){
  this.observers.remove(observer);
 }
 
 public void DIYnotify(){
  for(int i = 0 ; i < this.observers.size() ; i++){
   Observer observer = (Observer)observers.get(i);
   observer.Update();
  }
 }
}
//Observer
abstract class Observer{
 abstract void Update();
}
//concreteObserver
class concreteObserver extends Observer{
 private String observerState;
 private concreteSubject subject;
 private String name;
 
 public concreteObserver(concreteSubject subject,String name){
  this.name = name;
  this.subject = subject;
 }
 public void Update(){
  this.observerState = subject.getSubjectState();
  System.out.println("Observer " + name + "'s new state is " + observerState);  
 }
}
//concreteSubject
class concreteSubject extends Subject{
 private String subjectState;
 public void setSubjectState(String state){
  subjectState = state;
 }
 public String getSubjectState(){
  return subjectState;
 }
}


相关文章

抽象工厂模式

//抽象工厂模式//Copyright CAnca Software office//Created by CAnca.2006public class AbstractFactory{ p...

单例模式

//CopyRight CAnca Software Office. 2006//Created by CAnca. import java.util.*; public class singleto...

建造者模式

//建造者模式//CopyRight(C)CAnca Software Office.//Created by CAnca. import java.util.*; public class Buil...

原型模式

//原型模式//CopyRight(C) CAnca Software Office.2006//Created by CAnca. public class PrototypeMode{ ...

代理模式

//代理模式--真实例子//CopyRight(C)CAnca Software Office.2006//Created by CAnca.   public class ProxyMod...

桥接模式

//桥接模式//CopyRight(C) CAnca Software Office 2006.//Created by CAnca. import java.util.*; public class...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。