notifications ou singleton common

bofybofy Membre
11:48 modifié dans API AppKit #1
Bonjour

Après pas mal d'essais, je me pose la question : quelle est la meilleure méthode, dans la logique cocoa, pour communiquer des données d'une (instance de ) classe à  l'autre ?

J'en ai découvert deux :
    - un singleton "Common", c'est me semble-t-il la technique du C ?
    - des tas de notifications, plus dans la logique événementielle ?

Avant de tout reconstruire, j'aimerais les avis des uns et des autres ?

Merci

Réponses

  • schlumschlum Membre
    11:48 modifié #2
    Le singleton ce n'est certainement pas une méthode du C ;)
    C'est un design pattern objet qui permet effectivement d'avoir une instance unique (ou un certain nombre d'instances) d'une classe partagé dans tout le programme.

    En C, on utilise simplement "static" ou "extern"

    Après, la communication d'un objet, ben ça dépend complètement du contexte.
  • MalaMala Membre, Modérateur
    11:48 modifié #3
    dans 1224594991:

    Avant de tout reconstruire, j'aimerais les avis des uns et des autres ?


    Singleton et notifications n'ont pas le même rôle:
    - Le singleton est un partage de ressources.
    - Les notifications sont des envois de ressources.

    Pour le singleton c'est la classe qui a besoin de l'information qui va aller interroger le singleton. Pour les notifications, c'est une autre classe qui va envoyer les infos.

    Ces deux notions sont donc d'un usage complémentaire.

  • mouvicielmouviciel Membre
    11:48 modifié #4
    Bonjour,

    En fait, le mécanisme de notification utilise un singleton, [tt][NSNotificationCenter defaultCenter][/tt].

    Sinon, il existe au moins deux autres techniques pour communiquer des données d'un objet à  l'autre:
    • La plus simple, qui consiste à  envoyer un message à  un objet destinataire, [tt][destinataire envoieDonnees:blabla][/tt] (à  charge à  la classe du destinataire à  implémenter -envoieDonnees:). Elle suppose que l'émetteur connaisse a priori son destinataire.
    • L'autre est la délégation où l'objet destinataire s'enregistre auprès de l'objet émetteur afin de recevoir un certain nombre de messages privilégiés. L'émetteur ne connaà®t pas son destinataire a priori et n'a pas nécessairement besoin d'un destinataire.


    La différence entre notification et délégation est que la notification peut avoir un nombre quelconque de destinataires alors que la délégation ne fonctionne qu'avec un seul destinataire.
  • MalaMala Membre, Modérateur
    11:48 modifié #5
    dans 1224617270:

    En fait, le mécanisme de notification utilise un singleton, [tt][NSNotificationCenter defaultCenter][/tt].

    Heu, quelqu'un avait sous-entendu le contraire?

    dans 1224617270:

    Sinon, il existe au moins deux autres techniques pour communiquer des données d'un objet à  l'autre:
    • La plus simple, qui consiste à  envoyer un message à  un objet destinataire, [tt][destinataire envoieDonnees:blabla][/tt] (à  charge à  la classe du destinataire à  implémenter -envoieDonnees:). Elle suppose que l'émetteur connaisse a priori son destinataire.
    • L'autre est la délégation où l'objet destinataire s'enregistre auprès de l'objet émetteur afin de recevoir un certain nombre de messages privilégiés. L'émetteur ne connaà®t pas son destinataire a priori et n'a pas nécessairement besoin d'un destinataire.


    La différence entre notification et délégation est que la notification peut avoir un nombre quelconque de destinataires alors que la délégation ne fonctionne qu'avec un seul destinataire.



    Ce qui me gêne dans tes propos c'est que ça donne l'impression que finalement on peut utiliser n'importe lequel de ces procédés. Hors chacun a un rôle précis:
    - singleton -> partager une ressource globale.
    - notification -> informer des objets.
    - délégation -> charger une classe tierce d'un travail bien précis.


  • schlumschlum Membre
    11:48 modifié #6
    La délégation, ce n'est nul autre qu'une normalisation du système de callbacks...
Connectez-vous ou Inscrivez-vous pour répondre.