|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
前些天,在CSDN上看到了一个消息,说是net网页编程网页编程AJAX成功在Linux上运行,这一点对我触动很大,而且引发了我许多感叹,所以想写出来分享一下。作为一个Java程序员,不熟习计划形式几乎欠好意义和人打召唤,而Observer形式能够说是位列最经常使用的计划形式之列,固然偶然候在详细代码里,它纷歧定叫这个名字,好比洗面革心叫个Listener,但形式就是这个形式。
手工完成一个Observer也不是多庞大的一件事,只是由于这个计划形式其实太经常使用了,Java就把它放到了JDK内里:Observable和Observer,从JDK1.0里,它们就一向在那边。从某种水平上说,它简化了Observer形式的开辟,最少我们不必再手工保护本人的Observer列表了。
不外,如前所述,JDK里的Observer从1.0就在那边了,直到Java7,它都没有甚么改动,就连关照的参数仍是Object范例。要晓得,Java5就已泛型了。Java5是一次年夜范围的语法调剂,很多程序库从那入手下手从头计划了API,使其更简便易用。固然,那些不做应对的程序库,多数也就过期了。这也就是这里要会商常识更新的缘故原由地点。
明天,关于一般的使用,假如要利用Observer形式该怎样做呢?谜底是Guava的EventBus。如你所见,它的名字并没有间接告知你它是一个Observer,但这有甚么干系呢,Listener不也是如许。
起首,我们声明一个Observer:
publicclassEventObserver{
@SubscribepublicvoidonMessage(Messagemessage){
...
}
}
你会发明,这个类并没有承继任何接口,只是在用来呼应关照的办法上声了然一个@Subscribe。
利用EventBus很复杂,先声明一个
EventBuseventBus=newEventBus();
然后,把我们写好的Observer注册出来:
eventBus.register(newEventObserver());
当要关照Observer时,我们只需如许便可:
eventBus.post(message);
这里,我们并没有告知EventBus,我们要处置的是一个Message范例,只是在EventObserver的onMessage办法的接口声明上利用了这个范例罢了。可是,当我们把动静发送进来的时分,它会依据范例举行婚配,包管我们的动静准确地发送到对应的中央。
比拟于JDK原本的完成,这个完成会更复杂。EventObserver不再必要存在一个承继系统中,而承继老是一种桎梏,把我们套牢在一个别系当中:
主要缺点就是:速度比较慢,没有C和C++快 |
|