观察者(Observer)模式知识讲稿.pptVIP

  • 4
  • 0
  • 约5.37千字
  • 约 30页
  • 2018-11-29 发布于天津
  • 举报
观察者(Observer)模式知识讲稿.ppt

观察者(Observer)模式 ;Observer模式;一个简单例子;两个Concrete Observer的具体实现 public class DigitObserver implements Observer { public void update(NumberGenerator generator) { System.out.println(DigitObserver: + generator.getNumber()); try { Thread.sleep(100); } catch (InterruptedException e) { } }} public class GraphObserver implements Observer { public void update(NumberGenerator generator) { System.out.print(GraphObserver:); int count = generator.getNumber(); for (int i = 0; i count; i++) { System.out.print(*); } System.out.println(); try { Thread.sleep(100); } catch (InterruptedException e) { } }}; import java.util.Vector; import java.util.Iterator; public abstract class NumberGenerator { private Vector observers = new Vector(); // 储存Observer public void addObserver(Observer observer) { // 新增Observer observers.add(observer); } public void deleteObserver(Observer observer) { // 刪除Observer observers.remove(observer); } public void notifyObservers() { // 通知Observer Iterator it = observers.iterator(); while (it.hasNext()) { Observer o = (Observer)it.next(); o.update(this); } } public abstract int getNumber(); // 取得数值 public abstract void execute(); // 产生数值 } ;import java.util.Random; public class RandomNumberGenerator extends NumberGenerator { private Random random = new Random(); // 随机数生成器 private int number; // 目前数值 public int getNumber() { // 取得数值 return number; } public void execute() { for (int i = 0; i 20; i++) { number = random.nextInt(50); notifyObservers(); } } } ;public class Main { public static void main(String[] args) { NumberGenerator generator = new Ra

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档