TASARIM ÖRÜNTÜLERİ

Facade

Structural Patterns bir örneği olan Facade örüntü bir çok bileşenden oluşup dışarıya bir kütüphane şeklinde hizmet verdiğinde istemcinin arkaplanda olan karmaşıklığı bilmesine gerek yoktur. Burda yapılan soyutlamaya Facade örüntüsü denir.

Onur Dayıbaşı
Design Patterns

--

Bilgi Notu: Diğer tüm Tasarım Örüntüleri yazıma bu linkten ulaşabilirsiniz.

Hangi Durumda

Sisteminizde bir çok bileşen bulunuyor. İstemci olarak sizin bu bileşenlerin birçoğunu bilip bir işlem yapabilmek için farklı farklı bileşenlerden farklı sıralarda metodlar çağırmanız gerektiği durumda İstemci sınıfı bu karmaşadan ve bu iş mantıklarından soyutlamak için istemcilerin önüne yazılan bir soyutlama katmanıdır (sınıfıdır)

Örnek Kullanım

Mesela GIS(Geographic Information System). içerisinde bir çok alt sistem mevcuttur, her birisinin birbirleri ile çalışması için bir sürü arayüz ve listener mekanizması mevcuttur.

  • Harita Altlığı,
  • Projeksiyon Mekaniği
  • VeriModeli,
  • Drag-Drop mekanizması,
  • Layer sistemi,
  • Icon sistemi,
  • vb… alt sistemlerinin olduğunu düşünelim.

Avantajı

Mevcut durumda istemci bütün bu alt sistemleri, bunların arayüzlerini ve “listenerları” öğrenmesi gerekir, Facade Pattern’i sayesinde istemci bundan soyutlanır. GIS uzmanı olan kişi tüm alt sistemleri içerecek bir Facede sınıfı içerisinden dışarıya daha temiz ve basit bir arayüzle fonksiyon erişim imkanı vererek, sanki bir API gibi kullanıcının GIS bilmeden bu sistemi kullanmasını daha rahat bir şekilde sağlamış olur.

Aynı zamanda ilerde bu alt sistemler üzerinde yapacağı değişiklikler, refactoring ve yeni fonksiyon güncellemelerinden son kullanıcıyı etkilemeden yapabilmesini sağlar. Sonuçta Facade ile alt sistemler soyutlanmış olur.

Yapısı

Facade Class Diagram from wikipedia

Kod

Burda bir bilgisayarın başlatılması sırasında CPU, Harddrive ve Memory üzerinden yapılacak işlemler bulunmaktadır. ComputerFacade bu başlatılma sırasındaki mantığı soyutlayarak istemciyi bu karmaşıklıktan uzak tutar.

Code from wikipedia

Okumaya Devam Et 😃

Bu yazının devamı veya yazı grubundaki diğer yazılara erişmek için bu linke tıklayabilirsiniz.

--

--