JAVA初学(五):新闻事件侦听演示程序

一、本章习题

附件是一个模拟事件消息订阅的程序,请阅读并修改。主要是加上一个自已的订阅者,并且该订阅者要用匿名类来实现。(基本要求占8分)如果可以,也加上用Lambda来实现的订阅者。(较高要求,占2分)。
注:由于ZIP文件无法上传,直接将题目代码粘贴如下:

 * @author tds  
 * * @author 修改者: 
 *  */ public class NewsDemo {
 public static void main(String[] args) {
  
  //模拟有一家新闻社
  NewsAgency bbc = new NewsAgency("BBC");
  //订阅该社的新闻
  bbc.addListener(new MyListener());
  
  //TODO 请在这里再加入一个Listener
  
  
  //新闻社启动其工作流程
  bbc.start();    
 }
}
/**
 * 事件信息
 */
class NewsEvent{
 Object source;  //事件来源
 String text;    //事件内容
 int level;      //事件级别
 NewsEvent(Object source, String text, int level){
  this.source=source;
  this.text = text;
  this.level = level;  
 }
}
interface Listener{
 void newsArrived(NewsEvent e);
}/**
 * 新闻机构
 */
class NewsAgency {
 String name; //机构名
 public NewsAgency(String name) {
  this.name = name;  
 }
 Listener[] listeners = new  Listener[100]; //侦听者(订阅者)
 int listenerCnt = 0; //已有的订阅者
 
 //加入一个订阅者
 void addListener(Listener oneListener){
  if(listenerCnt<listeners.length){
   listeners[listenerCnt] = oneListener;
   listenerCnt++;
  }  
 }
 
 //模拟一个事件发生,并通知所有的订阅者
 void start(){
  NewsEvent event = new NewsEvent("Mr. Joan", "Bombing", 9 );
  
  for(int i=0; i<listenerCnt; i++) {
   listeners[i].newsArrived(event);
  }
  
 }
}/**
 * 实现一个订阅者
 */
class MyListener implements Listener{
 //当接收到消息后,进行一些显示
 public void newsArrived(NewsEvent e){
  if( e.level>5) System.out.println("warning :");
  System.out.println("please note," + e.text + " happed!");
 }
}

二、使用匿名类添加Listener

 //TODO 请在这里再加入一个Listener,并使用匿名类来实现
  bbc.addListener(new Listener(){
   public void newsArrived(NewsEvent e){
    if( e.level>5) System.out.println("warning:2");
    System.out.println("please note," + e.text + " happed!");

三、使用lambda表达式添加Listener


  //TODO 请在这里再加入一个Listener,并使用lambda表达式来实现
  bbc.addListener(e->{
   if( e.level>5) System.out.println("warning:3");
   System.out.println("please note," + e.text + " happed!");
   }
    );
  
   

四、输出结果如下:

warning:1
please note,Bombing happed!
warning:2
please note,Bombing happed!
warning:3
please note,Bombing happed!

注:鉴于作者水平有限,欢迎广大JAVA爱好者批评指正~

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

IMUHERO

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值