C# Events & Delegates ile Observer Pattern
C# dilinde olaylar (Events) ve delegeler (Delegates), yazılım geliştirme süreçlerinde önemli kavramlardır. Özellikle, Observer Pattern (Gözlemci Deseni) uygulaması için C# events ve delegates kullanmak, uygulamalarımızın esnekliğini ve genişletilebilirliğini artırır. Bu yazıda, C# event ve delegate yapıları ile Observer Pattern'in nasıl çalıştığını keşfedeceğiz.
C# Events ve Delegates Nedir?
Delegeler, bir metodun referansını tutan türlerdir. Bu referans sayesinde, bir delegeden bir metoda kolaylıkla ulaşılabilir. Olaylar ise, bir delegeden türetilmiş özel bir türdür ve genellikle bir nesnenin durumundaki değişiklikler için tetiklenir. Bu yapı, dinamik ve esnek yazılım tasarımları oluşturmamıza olanak tanır.
Delegelerin Tanımlanması
Aşağıdaki örnek, bir delegenin nasıl tanımlanıp kullanılabileceğini göstermektedir:
delegate void Notify();
class Process{
public event Notify ProcessCompleted;
public void StartProcess() {
// İşlemler
OnProcessCompleted();
}
protected virtual void OnProcessCompleted() {
ProcessCompleted?.Invoke();
}
}
Observer Pattern’in C# ile Uygulanması
Observer Pattern, bir nesnenin durumundaki değişiklikleri izlemek isteyen diğer nesnelerin güncellenmesini sağlar. Bu uygulama, özellikle GUI uygulamalarında veya veri güncellemelerinde kullanılır.
Observer Pattern Örneği
Aşağıdaki kod örneği, bir işlem tamamlandığında dinleyicilere (Observer) bildirim gönderen basit bir uygulamayı göstermektedir:
class Observer {
public void Subscribe(Process process) {
process.ProcessCompleted += Notify;
}
private void Notify() {
Console.WriteLine("İşlem tamamlandı!");
}
}
class Program {
static void Main(string[] args) {
Process process = new Process();
Observer observer = new Observer();
observer.Subscribe(process);
process.StartProcess();
}
}
Sonuç
C# dilinde event ve delegate yapıları, Observer Pattern'in uygulanmasında önemli bir rol oynar. Bu yöntem, yazılım uygulamalarımızda daha iyi bir yapı ve düzen sağlarken, kod tekrarını azaltır ve bakımını kolaylaştırır. C# kullanarak etkin bir gözlemci deseni geliştirmek, yazılım projelerinizdeki esnekliği artırmanıza yardımcı olacaktır.

Yorum Gönder