快速业务通道

Java设计模式 - 观察者模式 - 编程入门网

作者 佚名技术 来源 NET编程 浏览 发布时间 2012-06-20
removeObserver(IObserver observer) {         if(!_observers.contains(observer)) {             System.out.println("< " + observer + " > is never registed!");         }         // Remove an observer         _observers.remove(observer);         System.out.println("< " + observer + " > is removed successfully!");     }     @Override     public String getCheckList() {         return this._checkList;     }     @Override     public String getProcess() {         return this._process;     }     @Override     public String getStatus() {         return this._status;     }     @Override     public void setCheckList(String checkList) {         this._checkList = checkList;     }     @Override     public void setProcess(String process) {         this._process = process;     }     @Override     public void setStatus(String status) {         this._status = status;     }     // 这里将观察者列表定义为一个静态的变量,这样可以保证自始至终只有一个变量列表,便于系统的维护。     // 这里用到了泛型,这样在对这个列表进行操作的时候,无需再进行类型的转换。     private static List<IObserver> _observers;     private String _status;     private String _process;     private String _checkList; }

Java设计模式 - 观察者模式(3)

时间:2011-01-17 GooooWei

在这里我们没有给观察者定义接口,而是使用了一个抽象类。因为所有的观察者都必须从主体对象那里获取信息,而且获取信息的方法都是一样的,这样可以避免重复编码。

/** *//**   * 这个抽象类继承了Iobserver接口,所以我们必须实现remind方法。   * 在remind方法中从主体对象中获取所有需要的信息。   * 并调用sendEmail方法对观察者实时进行更新。   */ public abstract class TaskObserver implements IObserver {     @Override     public void remind(ITask taskSubject) {         this._status = taskSubject.getStatus();         this._process = taskSubject.getProcess();         this._checkList = taskSubject.getCheckList();         // 更新观察者对象         this.sendEmail();     }     public abstract void sendEmail();     // 工具类方法,减少编码数量,增加可读性。     public void print(String msg) {         System.out.println(msg);     }     // 在父类中定义参数,减少重复编码。     protected String _status;     protected String _process;     protected String _checkList; }

然后定义任务受托人[assignee],检查者,报告者。他们都继承TaskObserver类,这样减少了代码的重复,而且方便了代码的维护。

public class Assignee extends TaskObserver {     @Override     public void sendEmail() {         print("[Assignee] The current status is : <" + this._status + ">.");         print("[Assignee] The current process is : <" + this._process + ">.");         print("[Assignee] The current ch

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号