MVCSHARP Ailesi ile yazılım geliştirmeye dair makaleler

Design Pattern(Java) Facade

 

Facade Design pattern Tanımı , İş Yapan alt sistemlere bir başka nesne üzerinden ulaşıp kullanıcıya kolaylık sağlamaktır diyebiliriz.


Kelime anlamından'da yola çıkıcak olursak Facade(Cephe),

kullanıcının(programcının) alt sistemlerdeki karışıklıkla boğuşmaması için tanımlı olan bir Facade Nesne ' si 
içinde bu alt sistemlerin Instance ' larını oluşturarak asıl operasyonların sadeleştirilmesidir.
Dışarıdan Bu nesne'yi kullanan kullanıcıya(Programcı) kolaylık ve güzellik sunan bir tekniktir aynı zamanda.

.Net FrameWork İcin Bu Tekniğe Verilcek En İyi Örnek HttpContext Sınıfıdır.

Bizde Ufak bir örnek ile konuyu biraz daha pekiştirmiş olacağız

Hafta sonları için gezintiye çıktığımız bisikletimizin vites ayarlarını bozduğumuzu düşünün.
Ve bunu bir tamirciye götürmemiz, en kısa zamanda tamirini yaptırıp güzel hafta sonu gezimize devam etmemiz gerekiyor=)
üstadların dediği gibi gelin biraz gerçek hayat programlayalım:D


Bisiklet tamircisi ilk olarak vites ayarlarını kontrol edicektir.

TransmissionSettings

vites ayarlarından gerekli neticeyi elde ettikten sonra genel bir bakım yapıp bisikleti bize teslim edicektir.

GeneralMaintenance

Vites ayarlarını ve genel bakım işlemlerini bisiklet tamircisi açısından alt sistemler olarak düşünelim.

Facade Tekniğinin en güzel yanı, alt sistemlerin örneklemelerini sürekli alıp ilgili metodlar ile işlem yapılacağına 
(ki bu aynı zamanda sık bağlılık problemini(loosely coupled) ayağı kaldıran bir tekniktir)
yazılan bir facade nesne si uzerinden dış dunyaya ilgili metodları sunmasıdır.


Facade tekniğinin altın kurallarından biride bu katmanı yok saydığımız zaman operasyonlarımızın hala iş goruyor olmasıdır.Ve Genellikle Singleton Tekniği ile süslenmektedir.

ve teknik ile ilgili Facade Sınıfımızı Buna göre tasarlayalım

Facede Bicycle Repair Shop

dikkat ederseniz "FacadeBicycleRepairShop" isimli facade nesnemiz aslında iki adet alt sistemi kendi içinde sadeleştirmiştir.

Ve Bize Sadece Gerekli Olan Operasyonları Sunmuştur.Alt Sistemleri Bizim Yazmadığımızı Düşündüğümüz bir başka senaryoda 'BicyleInfo()' metodu istediğimizi en sade şekilde vermektedir.

Bu teknik sayesinde alt sistemler ile direk konuşmayıp,

bize kolaylık sunan facade nesnesi üzerinden konuşup hem ön tarafta işi kolaylaştırdık,
hemde karışık alt sistemlerdeki yapıyı oldukça sadeleştirdik.

Run Operations

bu senaryodan Facade Nesnesini Çıkarttığımız zaman

Run Operations 2

operasyonlarımızın halen çalışabilir olduğunu görmekteyiz.
Senaryo basit ama daha karmasık senaryolarda Facade tekniğinin kullanılmasının size sağladı faydaları emin olun ki goruceksiniz dir.

Saygılarımla Semih Sipahi

Facebook Üzerinden Yorumlar