Design Patterns

      Null nesneler nedeniyle programlarda meydana gelen hataların önüne geçmek ve null kontrolleri ile artan kod karmaşasını önlemek amacıyla null object pattern ortaya çıkmıştır. Aşağıdaki UML diagramında bu pattern'ın yapısı gösterilmiştir. Strategy pattern ile oldukça benzer bir yapısı vardır.

      Kod üzerindeki örneğimizde ise, bir öğrenci nesnesi oluşturuluyor ve öğrenci detayları kullanıcıya gösterilmek isteniyor. Kullanıcının verisini veritabanından çektiğimizi düşünürsek null geldiği durumda, null exception almak yerine kullanıcının bilgisi boş verilmiştir.

      Böylece null kontrollerini kaldırarak kodumuzu daha sade hale getirmiş ve null exception hatasının da önüne gelmiş olduk. Bu pattern her zaman uygulanmaya uygun olmasa da güzel kullanımlar oluşturulabilir.

      Ancak unutulmamalıdır ki, yazılımcılar null objesi dönmek yerine bu abstract yapıya doğrudan null dönebilirler. Bu konu da null object pattern'ın dikkat edilmesi gereken noktasıdır.

image

      Null object pattern'ın farklı bir çeşidi olan special case pattern, null object pattern'dan farklı olarak belirli bir durum için farklılık gösteren nesne bilgileri dönebilmektedir. Yapı olarak aynı şekilde strategy pattern'ı uygulamaktadır.

      Kod üzerinde gösterilen örnekte bir kullanıcı bilgisinin alınması örneklendirilmiştir. Kullanıcı bilgisinin başarılı bir şekilde alınamayarak null gelmesi sonucu kullanıcı bulunamadı bilgisini dönecek sınıf verilmiştir.

image

      Uygulama içerisindeki kontrollerin düzenli olması, bağımlılıkların azaltılması ve gerektiğinde "and, or vb." gibi ifadelerle kombine edilebilmesi nedeniyle kullanılan kullanışlı bir tasarım desenidir. Ayrıca linq sorguları içerisine kolayca entegrasyonu sayesinde, hem entityframework ile uyumlu çalışmaktadır, hem de uygulama içerisindeki filtrelemelerde kolayca kullanılabilmektedir.

image