行为模式: Visitor(访问者)

来源:互联网 发布:急用淘宝赚钱 编辑:程序博客网 时间:2024/05/21 07:07


using System;using System.Collections; namespace Wikipedia.Patterns.Strategy{        // IObserver --> interface for the observer        public interface IObserver        {                // called by the subject to update the observer of any change                // The method parameters can be modified to fit certain criteria                void Update(string message);        }         public class Subject        {                // use array list implementation for collection of observers                private ArrayList observers;                 // constructor                public Subject()                {                        observers = new ArrayList();                }                 public void Register(IObserver observer)                {                        // if list does not contain observer, add                        if (!observers.Contains(observer))                        {                                observers.Add(observer);                        }                }                 public void Unregister(IObserver observer)                {                        // if observer is in the list, remove                        if (observers.Contains(observer))                        {                                observers.Remove(observer);                        }                }                 public void Notify(string message)                {                        // call update method for every observer                        foreach (IObserver observer in observers)                        {                                observer.Update(message);                        }                }        }         // Observer1 --> Implements the IObserver        public class Observer1 : IObserver        {                public void Update(string message)                {                        Console.WriteLine("Observer1:" + message);                }        }         // Observer2 --> Implements the IObserver        public class Observer2 : IObserver        {                public void Update(string message)                {                        Console.WriteLine("Observer2:" + message);                }        }         // Test class        public class ObserverTester        {                [STAThread]                public static void Main()                {                        Subject mySubject = new Subject();                        IObserver myObserver1 = new Observer1();                        IObserver myObserver2 = new Observer2();                         // register observers                        mySubject.Register(myObserver1);                        mySubject.Register(myObserver2);                         mySubject.Notify("message 1");                        mySubject.Notify("message 2");                }        }}

原创粉丝点击