Facade Design Pattern

Umut Ramazan Gedik
3 min readJun 21, 2022

--

Facade nedir

Bir alt sistemin parçalarını oluşturan classları istemciden soyutlayarak kullanımı daha da kolaylaştırmak için tasarlanmış tasarım kalıbıdır.Mimarisel açıdan ise, karmaşık ve detaylı bir sistemi organize eden ve bir bütün olarak clientlara(istemcilere) sunan yapıdır.

Anlayacağınız, karmaşık ve detaylı olarak nitelendirdiğimiz bu sistemi bir alt sistem olarak varsayarsak eğer bu sistemi kullanacak clientlara daha basit bir arayüz sağlamak ve alt sistemleri bu arayüze organize bir şekilde dahil etmek ve bu alt sistemlerin sağlıklı çalışabilmesi için bu arayüz çatısı altında işin algoritmasına uygun işlev sergilemek istersek Facade Design Pattern’i kullanmaktayız.

Burada bilmeniz gereken durum, alt sistem içerisinde bulunan sınıfların birbirlerinden bağımsız olmasıdır. Ayriyetten Facade sınıfından da bağımsız bir şekilde çalışabilmektedirler.
Facade bizim classlarımızı içermek zorundadır ve operasyonu yaparken onlara ait fonksiyonellikleri kullanması gerekli.

Facade neden kullanılır

Uygulamanızın kullanımı yüksek karmaşıklığa sahip bölümlerine sahip olduğunuzu hayal edin. Ve bazı nedenlerden dolayı, onu yeniden düzenleyemezsiniz, ancak tüm bu karmaşık nesneleri kullanmanız gerekir. Bunları maskelemek ve tüm akışın kullanımını daha kolay hale getirmek için birleşik bir arayüz oluşturmak için Facade modelini kolayca uygulayabilirsiniz.

Yukarıda gördüğünüz gibi üç farklı sosyal medya kanalında mesaj paylaşmak için aynı adımları üç kez tekrarlamış olduk. Mesajı paylaşmak için daha fazla sosyal medya kanalımız olsaydı daha da acı verici olurdu. İdeal bir senaryo ne olurdu, mesajı tek seferde tüm sosyal medya kanallarında paylaşmak. Bunu yapmak için, aşağıda görüldüğü gibi bir Facade sınıfı tanıtabiliriz.

Yukarıda gördüğünüz gibi mesajı bir kere belirliyoruz ve tek seferde üç sosyal medya kanalının tamamında paylaşıyoruz.

Facade kullanımı

Örnek olarak kullanıcı hello adındaki get ismimize istek atınca helloController bize bir mesaj döndürecek.

Uml Yapısı

Kodlar

NameGenerator adında sınıfımız var içerisinde isimler dizim var random olarak bana isim döndürüyor.

burada da MessageGenerator sınıfımda bir yapıcı method oluşturdum attribute tarafına NameGenerator türünden değişken tanımladım.

helloMessage sınıfı tanımlayıp mesaj değişkenimi tanıttım nameGenerator sınıfımda ki methodumdan randomName Sınıfını çağırıp message değişkenimi retrun ettim.

Şimdi bunu Hello controllere tanımlayalım.

Servislerden MessageGeneratorumu Controllerıma dahil ettim. Şimdi hello methodu oluşturup bir response dönücem.Methodumda MessagesGenerator türünden değişken alıcam.

Return olarak helloMessage methodumu çalıştırdım.

Şimdi Deniyelim.

Kodumu Çalıştı. Bu sayede FACADE DESİGN PATTERN ‘i kullanarak kodumuzu oluşturduk.

Okuduğunuz için teşekkür ederim.

--

--