Signaalit ja aukot

Signaalit ja raot ovat täytäntöönpanon suunnittelu kuvio Observer käyttää ohjelmiston kirjastojen Qt ja Wt.

Käsite on, että objektit, jos niiden luokat ilmoitetaan oikein, voivat lähettää signaaleja riippumatta siitä, sisältävätkö ne tietoja. Toisaalta muut kohteet voivat vastaanottaa nämä signaalit aikavälien kautta, jos ne on nimenomaisesti kytketty näihin signaaleihin.

käyttää

Kehittäjän näkökulmasta signaalit esitetään yksinkertaisina lähetysluokan menetelminä , joita ei ole toteutettu. Signaaliin kytketty väli on puolestaan ​​vastaanottoluokan menetelmä, jolla on oltava sama allekirjoitus (toisin sanoen samat parametrit kuin signaalilla, johon se on kytketty), mutta toisin kuin signaalit, se on toteutettava. kehittäjä. Tämän toteutuksen koodi edustaa signaalin vastaanoton yhteydessä suoritettavia toimintoja.

Tämä havainnointisuunnittelumallin toteutus hyödyntää Qt: n Meta Object Compiler (MOC) -tekniikkaa, joka on vastuussa kaikkien koodien luomisesta, joka tarvitaan signaalien ja aikavälien yhdistämiseen.

Qt mahdollistaa myös signaalien liittämisen toisiinsa, joten kun yksi signaali lähetetään, toinen signaali lähetetään.

Signaalin tiedot sisältyvät paitsi itse puheluun myös mahdollisiin parametreihin. Tästä syystä aikavälin allekirjoituksen on oltava identtinen sen signaalin allekirjoituksen kanssa, johon se on kytketty.

Muut toteutukset

Muita signaalien ja aikavälien toteutuksia on C ++: ssa (joka on Qt: n viitekieli) ja jotka eivät vaadi MOC: tä. Näin on libsigc ++ ja Boost via boost.signals -sovellusten kanssa.

NET kehys on samankaltainen järjestelmä läpi osanottajaa . DOM-toteutus suosittelee addEventListener () -menetelmää.

Mennä syvemmälle

Viitteet

  1. (in) "  libsigc ++ - Typesafe Callback Framework for C ++  " (käytetty 11. helmikuuta 2009 )
  2. (in) Douglas Gregor, "  Luku 16. Boost.Signals  " ( katsottu 11. helmikuuta 2009 )

Ulkoinen linkki