简单的来个例子 我们现在有一个事件,ChatEvent,但是事件类型有很多,比如连接服务器事件,接收信息时间,异常事件,断开服务器事件,还有很多事件,但是我们如果采用if语句进行判断,确实很难维护,代码感官不好 下面演示常见模拟 ChatEvent事件publicinterfaceChatEvent{枚举ChatEventTypeeventType();defaultObjectevent(){returnNULL;}} ChatEventListener事件监听器publicinterfaceChatEventListenerextendsEventListener{voidonChatEvent(ChatEventevent)throwsException;} ChatEventHandler事件处理器publicinterfaceChatEventHandler{voidhandler(ChatEventevent)throwsHandlerException;} 此时我们可能是ChatEventType是枚举类型,是事先声明好的,对于这种事件类型,还是根据约定走,因为越随意越不好维护。或者你可以换成枚举类型ChatEventListenerlistenernewChatEventListener(){OverridepublicvoidonChatEvent(ChatEventevent)throwsException{if(event。eventType()ChatEventType。CLIENTSHUTDOWN){do}if(event。eventType()ChatEventType。CLIENTSTART){do}if(event。eventType()ChatEventType。CLIENTREAD){do}}};listener。onChatEvent(ChatEvent。SERVERSTART); 我们发现一堆ifelse,或者switch。。case语句时让别人看源码发现,这个水平也太垃圾了吧,就这么写,哎,所以此时我们就引入了我们的 ChatEventHandler接口类,我们将他实现成各种事件的Handler,比如ClientReadChatEventHandler,ClientShutDownChatEventHandler等等之类的。 此时我们只需要维护我们这些拓展的ChatEventHandler的实现类,那么我们该怎么维护呢,此时我们选择Java提供的HashMap,此时我们只需要一个这个就行了publicfinalclassClientChatHandlerConstant{privatestaticfinalMapChatEventType,ChatEventHandlerHANDLERMAPnewHashMap();static{读HANDLERMAP。put(ChatEventType。CLIENTREAD,newClientReadChatEventHandler());关闭HANDLERMAP。put(ChatEventType。CLIENTSHUTDOWN,newClientShutDownChatEventHandler());启动HANDLERMAP。put(ChatEventType。CLIENTSTART,newClientStartChatEventHandler());连接成功HANDLERMAP。put(ChatEventType。CLIENTCONNECTED,newClientConnectedChatEventHandler());}publicMapChatEventType,ChatEventHandlergetHandlerMap(){returnHANDLERMAP;}} 此时我们的代码就会变成ChatEventListenerlistenerevent{获取HandlerChatEventHandlerhandlerClientChatHandlerConstant。getHandlerMap()。get(event。eventType());然后处理handler。handler(event);};listener。onChatEvent(ChatEvent。SERVERSTART); 此时我们只需要拓展我们的handler,就可以实现,各种情况,这种对于整体的拓展性也提高了,同时代码的耦合度也大大降低,我们只需要维护我们的EventType,Map,EventHandler三者关系,中间只有Map进行桥接,这就是桥接模式,同时我们的拓展点只是我们的各种Handler就行了。