1. Ana Sayfa
  2. ASP.Net
  3. Tasarım Desenleri Yazı Dizisi – Bölüm 2 – Builder (Kurulum)

Tasarım Desenleri Yazı Dizisi – Bölüm 2 – Builder (Kurulum)

(Yaratıcı Tasarım Desenleri) grubu altında yer alan tasarım deseni istemci tarafından talep edilen nesnelere ait daha önceden belirli kurallar çerçevesinde hazırlanmış olan içeriklerin, otomatik olarak cevap vermesini sağlamaktadır.

Bunun en önemli nedenlerinden birisi talep edilen nesnenin farklı içeriklerde çeşitlerine ihtiyaç duyulmasıdır. Bu durumu şu şekildeki bir senaryo ile daha kolay kavrayabiliriz.


Resim-1

Fastfood ürün satışı yapılan bir işletmede aşağıdaki şekilde 3 adet menünün bulunduğunu düşünelim.

Menü : Kaşarlı Tost Menüsü

  • Kaşarlı Tost
  • 4 Adet Yeşil Zeytin
  • 3 Adet Salatalık Dilimi
  • 2 Adet Domates Dilimi
  • Kola

 

Menü : Sucuklu Tost Menüsü

  • Sucuklu Tost
  • 4 Adet Siyah Zeytin
  • 1 Adet Beyaz Peynir Dilimi
  • Ayran

 

Menü : Soğuk Sandviç Menüsü

  • Soğuk Sandviç
  • 4 Adet Salatalık Turşusu
  • 2 Adet Biber
  • Çay

 

Bu işletmeye gittiğimizde menü seçimi sonrası yemeklerin hazırlanması işleminde standartlar dahilinde içeriğin ne olduğunu belirtmeyiz değil mi?

Yemekler hazırlanır ve önümüze gelir. Bizim bu aşamada yapmış olduğumuz işlem ise sadece bize sunulmasını istediğimiz menüye ait seçimin yapılmasıdır.

İşte Builder Tasarım Deseni de tam olarak bu işlemi gerçekleştirir. Biz sadece bize sunulmasını istediğimiz nesneyi seçeriz ve nesne arka planda hazırlanmış olan içeriklerinin işlenmiş hali ile bizlere sunulur.

Şimdi belirtmiş olduğumuz işletmemize ait işleyişi Builder Tasarım Deseni ile tasarlayalım.

İlk yapmamız gereken işlemimiz tüm menülerimizde bulunan ve Yemek – Garnitür –İçecek olarak gruplandıracağımız taban bilgileri tanımlamak.


Resim-2

Taban bilgilerimizden farklı olarak tanımlama yapmış olduğumuz Classımızda ToString() metodunu override ile ezmiş olmamızın sebebi menümüze ait içeriğin ToString() metodunu kullanacağımız sipariş oluşturma aşamasında ekrana gelmesini sağlamaktır.

Taban bilgilerimizi tanımladıktan sonra Menulerimizin hazırlanması ile ilgili işlemleri belirleyen sınıfımızı her menünün içeriği farklı olması nedeniyle abstract olarak hazırlayalım


Resim-3

Bu sınıfımızdaki protected olarak tanımlanmış olan _Menu nesnesi Menülerimiz altından bir önceki sınıf içeriğinde belirttiğimiz ToString() metodumuza erişmek için gereklidir. Ancak dışarıdan erişimi sadece okunabilir tipte olmasını istediğimizden dolayı protected olarak tanımlanmış ve yardımcı nesne olarak sadece okunabilir (read-only) property olarak Menu propertisi tanımlanmıştır.

Menülerimize ait hazırlanma aşamalarını da tanımladığımıza göre artık Menülerimizi ve içeriklerini belirlediğimiz sınıflarımızı tanımlayabiliriz.


Resim-4


Resim-5


Resim-6

Menülerimizi de oluşturduktan sonra sıra sipariş alındığında alınan siparişin hazırlanmasına geldi.


Resim-7

Siparişin hazırlanması aşamasında hazırlanmış olan siparişin sunumunu da classımıza üstlendirmiş olduk


Resim-8

Dilenirse bu işleme sipariş alma aşamasından sonra da (nesne talebi yapıldıktan sonra) ulaşabiliriz.

Artık müşterilerimizden (İstemciden) siparişimizi alabiliriz.


Resim-9

Gördüğünüz gibi sipariş aşamasında sadece yeni bir sipariş oluşturularak sipariş edilecek menü seçiminden başka bir şey yapılmamaktadır.

Şipariş verildikten (İstemci tarafından nesne talebinden) sonra ise sonuç karşımıza hazırlamış olduğumuz Menü içeriği olarak gelmektedir.


Resim-10

Hazırladığımız menülerimize yenilerini ekleme işleminde İstemci tarafındaki kodda hiçbir değişiklik yapmamıza gerek yoktur. Tek yapmamız gereken Yeni eklediğimiz Menünün de içeriğinin Yemek – Garnitür ve İçecek şeklinde gruplandırılmış yapıda olmasına dikkat etmektir.

Bu makalede kullanılan tasarım desenine ait kodu indirmek için buraya tıklayın. Dosyanın şifresi mshowto.

Bu konuyla ilgili sorularınızı https://forum.mshowto.org linkini kullanarak ulaşacağınız forum sayfamızda sorabilirsiniz.

Referanslar

www.mshowto.org

Yorum Yap

Yazar Hakkında

1981 İstanbul doğumlu Erkan KİLMEN. Programlamayla ilk olarak 2002 Yılında Visual Basic ile başlamıştır. Daha sonrasında bu dilin kendisine yetersiz olduğunu düşünerek Visual C++ ile programlama bilgisini daha ileriye taşımıştır. 2004 yılında .NET teknolojisiyle tanışmış ve bu dile merak sarmıştır. Halen Microsoft'un yeni vizyonu olan .NET teknolojileri üzerine çalışmalarını sürdürmektedir.

Yorum Yap