Etiket : Open-Closed Principle (4)

State Design Pattern - C#

03.11.2023

State Design Pattern, nesnelerin durumlarını temsil etmek ve bu durumların değişimini yönetmek için kullanılır.

Shipment domain'ini düşünelim. En basit haliyle kargonun aşağıdaki gibi durumları olur.

  • OutForDelivery
  • Delivered
  • NotDelivered

Eğer kargo yurt dışından geliyorsa bunlara aşağıdaki durumlar da eklenir.

  • InTransit
  • InCustoms
  • InCustomsCleared

Bu durumlar ile ilgili business'ları düşünelim.

Devamını oku

Observer Design Pattern - C#

31.10.2023

Observer Design Pattern, bir nesnenin iç durumunda meydana gelen değişiklikleri takip etmek isteyen diğer nesnelere bildirmek için kullanılır.

E-ticaret domain'indeki ürünü düşünelim. Üründeki stok ve fiyat değişikliklerini ürün ile ilgilenen ziyaretçilere bildirmek istediğimizde Observer Design Pattern'i tercih edebiliriz.

Devamını oku

Decorator Design Pattern - C#

31.10.2023

Decorator Design Pattern, bir nesnenin davranışını bozmadan runtime'da nesneye dinamik olarak ek işlevsellikler kazandırmak için kullanılır.

Yukarıdaki gibi ürünleri dönen bir sınıfımız olduğunu varsayalım. Ürünleri cache'den getirmek gibi bir ihtiyacımız olduğunda aklımıza ilk gelen yol bu metotun içerisinde düzenleme yapmak olabilir. Birincisi, bu Single Responsibility prensibine uygun değil. İkincisi, bu sınıf projede farklı yerlerde kullanılıyor olabilir. Cache düzenlemesi yaparsak kullanılan yerlerdeki davranışı bozabiliriz. Çünkü her yerde cache'den gelmesini istemiyor olabiliriz.

Decorator Design Pattern ile bu metotta bir değişiklik yapmadan metota cache özelliği kazandırabiliriz.

Devamını oku

Strategy Design Pattern - C#

31.10.2023

Strategy Design Pattern, bir algoritmanın farklı varyasyonlarını tanımlamak ve bunları runtime'da değiştirerek birbirleri yerine kullanabilmek için kullanılır.

E-ticaret domain'indeki sepeti düşünelim. Sepeti kredi kartı veya pazar yerinin cüzdanı ile ödeyebilirim. Bunlar birer stratejidir, birbirlerinin yerine kullanılabilirler ve aynı işlemi gerçekleştirirler. Bu tür durumlarda Strategy Design Pattern tercih edilir.

Devamını oku
Muhabbetle ASP.NET Core ile geliştirildi.