我遇到的java笔试题--观察者设计模式

import java.util.ArrayList;
import java.util.List;




//观察者设计模式


public class ObserverDesignPattern
{
public static void main(String[] args) 
{
Programmer p=new Programmer();
p.addListener(new PM());
p.addListener(new Tester());
p.updateCode();

//
((Code) p.e).setUpdate(false);
p.updateCode();
}

}






//--被监听事件
interface ActionEvent{}


class Code implements ActionEvent
{
boolean update=true;

boolean isUpdate()
{
return update;
}

void setUpdate(boolean upstatus)
{
update=upstatus;
}
}








//--事件起源
class Programmer
{
List<Listener> listenerlist=new ArrayList<Listener>();
void addListener(Listener listener)
{
listenerlist.add(listener);
}

ActionEvent e=new Code();

void updateCode()
{
if(((Code) e).isUpdate())
{
System.out.println("->need to update code");
for(int i=0; i<listenerlist.size(); i++)
{
Listener a=listenerlist.get(i);
a.actionPerformed(e);
}
}
else
System.out.println("->no need to update code");
}



}




//--监听者
interface Listener 

void actionPerformed(ActionEvent e); 
}


class PM implements Listener
{
public void actionPerformed(ActionEvent e)
{
System.out.println("PM say:");
}

}


class Tester implements Listener
{
public void actionPerformed(ActionEvent e)
{
System.out.println("Tester say:");
}

}



output:

->need to update code
PM say:
Tester say:
->no need to update code

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值