Maison > développement back-end > C++ > le corps du texte

C# | Comprendre le modèle d'observateur

王林
Libérer: 2024-07-23 20:44:15
original
1069 Les gens l'ont consulté

C# | Understanding the Observer Pattern

Remarque
Vous pouvez consulter d'autres articles sur mon site personnel : https://hbolajraf.net

Le modèle d'observateur est un modèle de conception comportemental dans lequel un objet, appelé sujet, maintient une liste de ses dépendants, appelés observateurs, et les informe de tout changement d'état, généralement en appelant l'une de leurs méthodes. Ce modèle favorise un couplage lâche entre les objets, car les observateurs ne sont conscients que du sujet et non les uns des autres. En C#, ce modèle est couramment utilisé dans la programmation événementielle.

Mise en œuvre

Comprenons le modèle Observer à travers un exemple détaillé en C#.

Interface sujet

Tout d'abord, nous définissons une interface pour le sujet. Cette interface contiendra des méthodes pour enregistrer, désinscrire et notifier les observateurs.

public interface ISubject
{
    void RegisterObserver(IObserver observer);
    void UnregisterObserver(IObserver observer);
    void NotifyObservers();
}
Copier après la connexion

Interface observateur

Ensuite, nous définissons une interface pour l'observateur. Cette interface contiendra une méthode que le sujet appellera lorsqu'il aura besoin de notifier les observateurs.

public interface IObserver
{
    void Update();
}
Copier après la connexion

Sujet concret

Maintenant, implémentons une classe de sujet concrète qui implémente l'interface ISubject.

public class ConcreteSubject : ISubject
{
    private List<IObserver> observers = new List<IObserver>();

    public void RegisterObserver(IObserver observer)
    {
        observers.Add(observer);
    }

    public void UnregisterObserver(IObserver observer)
    {
        observers.Remove(observer);
    }

    public void NotifyObservers()
    {
        foreach (var observer in observers)
        {
            observer.Update();
        }
    }
}
Copier après la connexion

Observateur du béton

Ensuite, implémentons une classe d'observateur concrète qui implémente l'interface IObserver.

public class ConcreteObserver : IObserver
{
    public void Update()
    {
        Console.WriteLine("Observer notified of state change.");
    }
}
Copier après la connexion

Exemple d'utilisation

Voyons maintenant comment nous pouvons utiliser ces cours ensemble.

class Program
{
    static void Main(string[] args)
    {
        ConcreteSubject subject = new ConcreteSubject();
        ConcreteObserver observer1 = new ConcreteObserver();
        ConcreteObserver observer2 = new ConcreteObserver();

        subject.RegisterObserver(observer1);
        subject.RegisterObserver(observer2);

        subject.NotifyObservers();

        subject.UnregisterObserver(observer1);

        subject.NotifyObservers();
    }
}
Copier après la connexion

Dans cet exemple, ConcreteSubject est le sujet et ConcreteObserver est l'observateur. Lorsque NotifyObservers() est appelé, les deux observateurs sont informés du changement d'état. Après la désinscription d'un observateur, seul l'observateur restant est informé.

Et ensuite ?

Le modèle Observer est un moyen puissant d'implémenter la communication entre des objets en C#. Il favorise le couplage lâche et peut être particulièrement utile dans les architectures événementielles. En comprenant et en implémentant ce modèle, vous pouvez écrire un code plus maintenable et évolutif.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:dev.to
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!