in Eski Blog Yazılarım

Pratik Structural Patterns Hilesi

Eğer mesaj tabanlı dağıtık sistemler üzerine çalışıyorsanız sunucular arası gönderilen mesajları object tipinde veya belirli abstract yapıları destekler nitelikte tasarlıyorsunuzdur.

Hal böyle olunca aldığınız mesajı anlamlandırmak için bazı tasarım kalıplarını (design patterns) uygulamanızda kaçınılmaz oluyor. Gelen object tipindeki mesajı unbox etmek için bir çok pattern var (Adapter, Vistor, Abstract Factory gibi) fakat bu patternler bir türlü ihtiyacımı karşılamıyorlardı. Konunun biraz üzerinde düşündükten sonra aşağıdaki yapı ile bütün yükü .Net’in üzerine yıkıp sıyrıldım :)

Kodu açıklamaya çalışayım;

"RemoteServer.GetCommandItemFromRemoteServer();" herhangi bir sunucudan gelen, içinde herhangi bir Type barındıran nesneyi döndürüyor. Bu mesajı anlamlandırmak için .Net’in dynamic özelliğini kullanıyoruz. İşin püf noktasıda burda zaten dynamic bir nesne yaratıp Object türündeki Mesaj Nesnemizi tanımladığımızda .Net bizi object’i hangi Type ile unbox edeceğimiz zahmetinden kurtarıyor. Ardından esas işi yapacak olan sınıfımızda ise Overloading yöntemi ile çıkış noktamıza başlıyoruz.

Yorum Bırak

Comment