v Definition A way of notifying change to number of depended class. The Observer pattern defines a one to many relationships between objects so that when one changes its state, all the others are notified accordingly. Encapsulate the core components in a Subject abstraction, and the variable components in an Observer hierarchy. v Design The Observer pattern is composed of two classes. The Subject/Target is a class whose objects change their state at an independent rate. Observers may indicate that they wish to be informed of these changes the Subject/Target will send them notifications. v UML Diagram Please refer to the attached doc for the imapges v Code //Notifier public delegate void ChangedEventHandler(object sender, ChangedEventArgs e); //Subject public class Target: ArrayList { public event ChangedEventHandler Changed; public override int Add(object value) { if (Changed != null) { Changed(this, new ChangedEventArgs() { PropertName = "Add", Value = value }); } return base.Add(value); } } //Custom Event args public class ChangedEventArgs : EventArgs { public string PropertName { get; set; } public object Value { get; set; } } public class ObserverOne { public ObserverOne(Target target) { target.Changed += new ChangedEventHandler(A); } public void A(object sender, ChangedEventArgs e) { Console.WriteLine("Tagret added with " + e.Value.ToString()); } } public class ObserverTwo { public ObserverTwo(Target target) { target.Changed += new ChangedEventHandler(A); } public void A(object sender, ChangedEventArgs e) { Console.WriteLine("Tagret added with " + e.Value.ToString()); } } //Client static void Main(string[] args) { Target target = new Target(); ObserverOne observer1 = new ObserverOne(target); ObserverTwo observer2 = new ObserverTwo(target); target.Add("Chinna"); } Hope this helps Chinna Download SampleDownload source files -58 kb |