老板约谈


  大家好,我叫小赵,目前在藏剑山庄任职高级铸剑师,我们的铸剑团队分为17个小组,高级铸剑师就是其中的小组长,小组长的主要工作就是管理小组的项目进度,并且处理一些剑农无法解决的技术问题。

 


  记得有一次,我们一伙七八个小组长闲得蛋疼,围在一起唠嗑,唠着唠着不知道是谁从裤兜里掏了一副扑克牌出来,大伙沉默了一分钟,经过小声的交流确认之后,瞬间撸起袖子直接开干!

 

  打牌的代码以省略号代替.......

 

只见控制台不断的输出信息:

老王:三带一。
老李:炸!报单!
老王:我炸!报单!
老李:王炸!
老王:我草!
......

 

  三天后,老王被老板约谈。原因是那天老板来车间巡视,听到老王大叫一声 "草泥马!"。

 

通风报信的秘书

  后来,老王去买通了老板身边的秘书,那个秘书在我印象中是个十足十的冰山美人,没想到老王确实有一套。

  从此以后,只要老板要来车间,秘书就悄悄打个电话过来报信。

 

类图:



观察者抽象:
public interface IObserver { void update(String str);//行动 }
 

秘书:
public class Secretary implements IObserver { @Override public void
update(String str) { System.out.println("秘书:老王!"+str); } }
 

被观察者抽象:
public interface IBoss { void coming();//老板来了 }
 

老板:
public class Boss implements IBoss { //老板身边的秘书 IObserver observer = new
Secretary(); @Overridepublic void coming() { System.out.println("老板走到门口...");
observer.update("老板来了!"); } }
 

主函数:
public static void main(String[] args) { Boss boss = new Boss();
boss.coming(); }
 

输出:

老板走到门口...
秘书:老王!老板来了!

 

多一个眼线,多一份平安

  不久后,老王又被老板叫去办公室喝茶了,原因是有几天秘书身体不适没上班,以至于老王的真面目又一次被老板看到了,场面一度尴尬。

 

  老王平安回来之后,大伙开了个紧急会议,为了避免万无一失,一名观察者是不够的!

 

  老李去搞定人事部小美,老刘去搞定公司前台小玲。

 

大伙商定之后,我迅速开始做设计,画下类图:



观察者抽象:
public interface IObserver { void update(String str);//行动 }
 

秘书:
public class Secretary implements IObserver { @Override public void
update(String str) { System.out.println("秘书:老王!"+str); } }
 

小美:
public class XiaoMei implements IObserver { @Override public void
update(String str) { System.out.println("小美:老李!"+str); } }
 

小玲:
public class XiaoLing implements IObserver { @Override public void
update(String str) { System.out.println("小玲:老刘!"+str); } }
 

老板行为抽象:
public interface IBoss { void coming();//老板来了 }
 

被观察者的管理抽象:
public interface IObservable { void add(IObserver observer);//增加观察者 void
delete(IObserver observer);//删除观察者 void notifyObservers(String message);//通知观察者
}
 

老板:
public class Boss implements IBoss,IObservable { //老板身边的观察者 private
ArrayList<IObserver> observers =new ArrayList<>(); @Override public void
coming() { System.out.println("老板走到门口..."); this.notifyObservers("老板来了!"); }
@Overridepublic void add(IObserver observer) { this.observers.add(observer);//
增加一个观察者 } @Override public void delete(IObserver observer) { this
.observers.remove(observer);//删除一个观察者 } @Override public void
notifyObservers(String message) {for(IObserver observer : this.observers){
observer.update(message);//给观察者发信息 } } }
 

主函数:
public static void main(String[] args) { //三个观察者 IObserver secretary = new
Secretary(); IObserver xiaoMei= new XiaoMei(); IObserver xiaoLing = new
XiaoLing();//老板 Boss boss = new Boss(); //三个观察者在观察老板 boss.add(secretary);
boss.add(xiaoMei); boss.add(xiaoLing);//老板来了 boss.coming(); }
 

输出:

老板走到门口...
秘书:老王!老板来了!
小美:老李!老板来了!
小玲:老刘!老板来了!

 

观察者模式

  观察者模式又叫发布订阅模式。

 

  观察者定义了一种一对多的依赖关系,多个观察者同时监听一个主题对象,这个主题对象在状态发生变化时,会通知所有观察者对象。

 

  使用场景:当一个对象的改变需要同时改变其他对象的时候,优先考虑观察者模式。

 

友情链接
KaDraw流程图
API参考文档
OK工具箱
云服务器优惠
阿里云优惠券
腾讯云优惠券
华为云优惠券
站点信息
问题反馈
邮箱:ixiaoyang8@qq.com
QQ群:637538335
关注微信