Observer Pattern

Observer tasarım örüntüsü bir objenin durumunun değişmesi halinde , onu dinleyen gözlemcilere bu durumun bildirilmesini ele alan bir tasarım örüntüsüdür. Burada objeler ve gözlemciler arasında one-to-many ilişki söz konusudur. Bu örüntünün kafamızda daha netleşebilmesi için birkaç örnek vermek gerekirse:

 

– Event handling işlemlerinde. Örneğin bir buttona bastığınızda bir methodun çağırılması işlemi arkaplanda bu tasarım örüntüsüyle kodlanmış bir kod tarafından sağlanmaktadır.

– MVC(Model – View – Controller) mimarisinde View kısmında herhangi bir değişikliğin otomatik olarak kod kısmına yansıtılması.
[![](http://www.onurbaysan.com/blog/wp-content/uploads/2011/09/800px-Observer-300×124.png “800px-Observer”)](http://www.onurbaysan.com/blog/wp-content/uploads/2011/09/800px-Observer.png)

public interface Subject { void subscribe(Observer observer); void unsubscribe(Observer observer); void notifySubscribers(Notification notification); }

public class Center : Subject { List observers = new List(); List notifications = new List(); public void subscribe(Observer observer) { observers.Add(observer); } public void unsubscribe(Observer observer) { observers.Remove(observer); } public void notifySubscribers(Notification notification) { foreach (Observer observer in observers) observer.update(notification); } public void insertNotification(Notification notification) { notifications.Add(notification); notifySubscribers(notification); } }

public interface Observer { void update(Notification notification); }

public class Subscriber : Observer { private string name; public Subscriber(string name) { this.name = name; } public string getSubscriberName() { return name; } public void update(Notification notification) { Console.WriteLine(name + ” : New message from ” + notification.getFrom() + ” : ” + notification.getBody()); } }

Kodun tamamı için [tıklayınız](http://www.onurbaysan.com/blog/wp-content/uploads/2011/09/observe.zip).

261 Words