<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    hengheng123456789

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      297 Posts :: 68 Stories :: 144 Comments :: 0 Trackbacks

    Reactor pattern Beginning

     

     

    The Reactor pattern has been introduced in  [Schmidt95] as a general architecture for event-driven systems. It explains how to register handlers for particular event types, and how to activate handlers when events occur, even when events come from multiple sources, in a single-threaded environment. In other words, the reactor allows for the combination of multiple event-loops, without introducing additional threads.


    The Reactor pattern

    • activate handlers when events occur
    • allow events from multiple sources
    • in single threaded process

    See D.C. Schmidt, Using Design Patterns to Develop Reusable Object-oriented Communication Software, CACM October '95, 38(10): 65-74


    slide: The Reactor pattern


    The abstract layout of the software architecture needed to realize the pattern is depicted in slide reactor-structure. The reactor environment must allow for binding handlers to particular types of events. In addition, it must be able to receive events, and select a handler to which the event can be dispatched.



    slide: The Reactor pattern -- structure


    Events may be organized in a hierarchy. There are two possible choices here. Either the topmost event class has a fat interface, containing all the methods that an event may ever need to support, or the topmost event class can be lean, so that additional methods need to be added by the subclasses of event. The first solution is chosen for hush, because in C++ it is not possible to load new classes dynamically. The latter solution is the way Java does it. In Java new event types can be added at the reactor level without recompiling the system. In the Java AWT and Swing libraries, handlers are called Listeners.

    Concrete handlers, derived from an abstract handler, must provide a method, such as operate(Event) that can be called by the reactor when the handler is selected after receiving an event.



    slide: The Reactor Pattern - interaction


    The interaction between the application, its handlers, the reactor and the environment from which the events originate is depicted in slide reactor-interaction. First, the reactor must be initialized, then one or more handlers can be registered, providing a binding for particular types of events. The reactor must then start to execute its eventloop. When it receives an event from the environment, it selects a handler and dispatches the event to that handler, by calling operate(Event).

    Consequences

    Modularity is one of the advantages of an event-driven software architecture. Handlers can be composed easily, since their invocation is controlled by the reactor. Another advantage is the decoupling of application-independent mechanisms from application-specific policies. In other words, handler objects need not be aware of how events are dispatched. This is the responsibility of the system or framework.

    The fact that control is handed over to the environment has, however, also some disadvantages. First of all, as experience with student assignments shows, it is difficult to learn in the beginning. But even when mastered, applications may be hard to debug, since it is not always clear why a particular handler was invoked, and because it may be difficult to repeat the computation preceding the fault.

    Applicability

    Some variant of the reactor pattern is used in Unix (X) Windows, (MS) Windows, and also GUI libraries such as Interviews, ET++ and hush. Another example is the Orbacus object request broker, that supports a reactor mode for server objects, which allows for receiving messages from multiple sources in a single thread. The Orbacus broker, however, also allows for multi-threaded servers.

    posted on 2007-06-28 18:18 哼哼 閱讀(449) 評論(0)  編輯  收藏 所屬分類: JAVA-Common
    主站蜘蛛池模板: 三年片在线观看免费大全电影| 亚洲乱码日产精品一二三| 手机永久免费的AV在线电影网| 日韩在线免费播放| 亚洲av永久无码天堂网| 国内自产拍自a免费毛片| 亚洲国产午夜精品理论片在线播放| 18禁无遮挡无码网站免费| 亚洲日本一线产区和二线| 国产成人精品免费直播| 老司机福利在线免费观看| 国产成人精品曰本亚洲79ren| 抽搐一进一出gif免费视频| 亚洲成AV人在线观看天堂无码| 久久青草免费91线频观看不卡| 亚洲一区二区三区高清| 国国内清清草原免费视频99| 77777亚洲午夜久久多喷| 国产自产拍精品视频免费看| 麻豆一区二区三区蜜桃免费| 亚洲狠狠婷婷综合久久久久| 在线免费观看亚洲| 亚洲三级高清免费| 亚洲A丁香五香天堂网| 大地影院MV在线观看视频免费| 久久亚洲精品成人av无码网站 | 亚洲视频在线免费| 精品亚洲永久免费精品| 亚洲成人免费电影| 午夜亚洲WWW湿好爽| 亚洲开心婷婷中文字幕| 五月亭亭免费高清在线| 亚洲AV网一区二区三区| 亚洲熟妇av一区二区三区| 免费专区丝袜脚调教视频| 看亚洲a级一级毛片| 亚洲成A人片777777| 女人张腿给男人桶视频免费版| 久久高潮一级毛片免费| 亚洲免费闲人蜜桃| 亚洲区不卡顿区在线观看|