打字猴:1.700469536e+09
1700469536
1700469537 System.out.println(“接收到信息,并进行处理!”);
1700469538
1700469539 }
1700469540
1700469541 }
1700469542
1700469543 那其他模块是怎么来调用的呢?我们编写一个Client类来描述,如代码清单22-19所示。
1700469544
1700469545 代码清单22-19 场景类
1700469546
1700469547 public class Client{
1700469548
1700469549 public static void main(String[]args){
1700469550
1700469551 //创建一个被观察者
1700469552
1700469553 ConcreteSubject subject=new ConcreteSubject();
1700469554
1700469555 //定义一个观察者
1700469556
1700469557 Observer obs=new ConcreteObserver();
1700469558
1700469559 //观察者观察被观察者
1700469560
1700469561 subject.addObserver(obs);
1700469562
1700469563 //观察者开始活动了
1700469564
1700469565 subject.doSomething();
1700469566
1700469567 }
1700469568
1700469569 }
1700469570
1700469571
1700469572
1700469573
1700469574 设计模式之禅 [:1700454021]
1700469575 设计模式之禅 22.3 观察者模式的应用
1700469576
1700469577 22.3.1 观察者模式的优点
1700469578
1700469579 ❑观察者和被观察者之间是抽象耦合
1700469580
1700469581 如此设计,则不管是增加观察者还是被观察者都非常容易扩展,而且在Java中都已经实现的抽象层级的定义,在系统扩展方面更是得心应手。
1700469582
1700469583 ❑建立一套触发机制
1700469584
1700469585 根据单一职责原则,每个类的职责是单一的,那么怎么把各个单一的职责串联成真实世界的复杂的逻辑关系呢?比如,我们去打猎,打死了一只母鹿,母鹿有三个幼崽,因失去了母鹿而饿死,尸体又被两只秃鹰争抢,因分配不均,秃鹰开始斗殴,然后羸弱的秃鹰死掉,生存下来的秃鹰,则因此扩大了地盘……这就是一个触发机制,形成了一个触发链。观察者模式可以完美地实现这里的链条形式。
[ 上一页 ]  [ :1.700469536e+09 ]  [ 下一页 ]