现在的位置: 首页 > 综合 > 正文

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

2018年05月10日 ⁄ 综合 ⁄ 共 1138字 ⁄ 字号 评论关闭

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

抱歉!评论已关闭.