《Head First设计模式》 - 观察者模式

来源:互联网 发布:广东高考难度 知乎 编辑:程序博客网 时间:2024/05/20 17:27
观察者模式使用非常广泛,在《head first设计模式》中放在第一位,该模式必须掌握。
该模式又叫发布/订阅模式;将观察者和被观察者分离。
<span style="font-family: Arial, Helvetica, sans-serif;">package observe;</span>
/** * 被观察者接口 *  * @author ZHEN.L * @date 2016.04.12 *  */public interface Observable {void addObserve(Observe o);void removeObserve(Observe o);void notifyObserve();}
package observe;import java.util.ArrayList;import java.util.List;/** * 被观察者实现 *  * @author zhen.l * @date 2016.04.12 *  */public class NewsObservale implements Observable {private String w;private String h;private List<Observe> observes = new ArrayList<Observe>();public void addObserve(Observe o) {observes.add(o);}public void removeObserve(Observe o) {observes.remove(o);}public void notifyObserve() {for (Observe o : observes) {o.update(w, h);}}public String getW() {return w;}public void setW(String w) {this.w = w;}public String getH() {return h;}public void setH(String h) {this.h = h;}public static void main(String[] args) {NewsObservale no = new NewsObservale();W w = new W();H h = new H();no.addObserve(w);no.addObserve(h);no.setH("1");no.setW("2");no.notifyObserve();System.out.println(" ---------  ");no.removeObserve(h);no.notifyObserve();}}
package observe;/** * 观察者接口 *  * @author ZHEN.L * @date 2016.04.12 *  */public interface Observe {void update(String w, String h);}
package observe;/** * 具体观察者 *  * @author HXZQ-SW *  */public class W implements Observe {public void update(String w, String h) {System.out.println("2.w=" + w + " , h=" + h);}}

package observe;/** * 具体观察者 *  * @author ZHEN.L * @DATE 2016.04.12 *  */public class H implements Observe {public void update(String w, String h) {System.out.println("1.w = " + w + " , h=" + h);}}




0 0
原创粉丝点击