昨天我们讲到人族毫无准备的情况下被神族空降金甲虫偷袭了一把,损失惨重,于是人族高层召开会议,总结教训,商讨应对方法,经过商讨,决定在各处设置警报点,并且给该警报点警卫一份名单,要求一旦警报点发出警报时,警卫立即通知名单上的所有部队!而且随着不同局势的变化,可以对名单上的成员进行修改!这一系列部署程序上称为抽象主题。符合这一主题的警报点有很多,比如位置a点的防空塔,这个防空塔程序上称为具体主题,此时要求所有部队,一旦接到警报通知,马上作出防御或还击,没有接到通知的就各干各的事,在程序里就是定义了一个接口或抽象类,制定了一条对警报作出反应的规定,我们称为抽象观察者,a点防空塔的警卫将符合这条规定的4部分人马:scv,坦克1队,坦克2对,隐形战机加入了通知名单(他们都来自不同的类,但都属于抽象观察者的之类,符合接口,能对警报作出反应),只要发生警报就通知者4部分人马!程序里我们称这4部分人马为具体观察者。这样就可以以不变应万变!

下面看看类图
《星际争霸》与设计模式(3)——观察者模式

《星际争霸》与设计模式(3)——观察者模式using System;
《星际争霸》与设计模式(3)——观察者模式
using System.Collections;
《星际争霸》与设计模式(3)——观察者模式
《星际争霸》与设计模式(3)——观察者模式
《星际争霸》与设计模式(3)——观察者模式
namespace starcraft.ObserverPattern
}

运行结果:
《星际争霸》与设计模式(3)——观察者模式

经过一来一回两次交锋,双方互有胜负,战成平手!局面进入僵持阶段!那么随着游戏的发展人族是如何把握战局,占据主动,迎来最后的胜利,我们慢慢说来!

相关文章: