62,615
社区成员
发帖
与我相关
我的任务
分享
interface Observer{
void ChangeEvent();
}
class A{
private Observer ob;
A(){
ob = null;
}
void SetObserver(Observer ob){
this.ob = ob;
}
void InvokeB(){
if (ob != null)
ob.ChangeEvent();
}
}
class B implements Observer{
public void ChangeEvent(){
System.out.println("B is invoked");
}
}
public class ObserverTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
A a = new A();
a.SetObserver(new B());
a.InvokeB();
}
}
public interface EventHandler {
void execute(String event,Object... parameters);
}
public class EventContext {
private static Map<String, Set<EventHandler>> EVENT_HANDLER_REGISTER = new HashMap<String, Set<EventHandler>>();
public static void fireEvent(String event, Object... parameters) {
Set<EventHandler> handlers = EVENT_HANDLER_REGISTER.get(event);
if (handlers != null) {
for (EventHandler handler : handlers) {
handler.execute(event, parameters);
}
}
}
public static void registerEventHandler(String event, EventHandler handler) {
Set<EventHandler> handlers = EVENT_HANDLER_REGISTER.get(event);
if (handlers == null) {
handlers = new HashSet<EventHandler>();
EVENT_HANDLER_REGISTER.put(event, handlers);
}
handlers.add(handler);
}
public static Set<EventHandler> getEventHandlers(String event) {
return EVENT_HANDLER_REGISTER.get(event);
}
}
public class A {
void doSomething(){
//do something
EventContext.fireEvent("somethingDone","some value from A");
}
}
public class B implements EventHandler {
@Override
public void execute(String event,Object... parameters) {
System.out.println("I'm running with "+ parameters[0]);
}
}
public class Test {
public static void main(String[] args) {
A a=new A();
B b=new B();
EventContext.registerEventHandler("somethingDone",b);
a.doSomething();
}
}
public class A {
/*
* main entry
*/
public static void main(String[] args)
{
B b=new B();
for(int i=0;i<10;i++)
{
if(i>5)
b.printf();
}
}
}
public class B {
/*
* print some information
*/
public void printf()
{
System.out.println("B 被触发啦!");
}
}