C# Facade Design Pattern

C# da Facade Design Pattern kullanımını görelim.

Facade Design Pattern: Structural Desing Pattern Gurubunda yer alır. Türkçe karşılığı Önyüz, Cephe anlamına gelir. Bir sistemin parçalarını oluşturan sınıfları istemci uygulamadan soyutlamak ve kullanım kolaylığı sağlamak için kullanılabilecek bir tasarım desenidir. Karmaşık bir yapıyı kolay kullanılabilir anlaşılabilir hale getirmek için kullanılır.

İçinde pek çok yapıyı fonksiyonu barındıran bir kod kümesi (library) içinden kullanacaklarını seçmek ve bunları bir önyüz(facade) ile kullanmak.

Farklı görevleri yerine getiren sınfılarımız olsun.

İstemci Facade

  • Class1: TextLog işlemleri
  • Class2: EventLog işlemleri
  • Class3: DBLog işlemleri
  • Class4: EmailLog işlemleri

Facade tipi istemci ile bu sınıflar arasında yer alır.

İstemci alt sistemlere (sınfılara) doğrudan ulaşmak yerine Facade aracılığı ile bu class'ları kullanabilir. İstemci bu sınıflardan soyutlanmış ve nasıl çalıştıkları ile ilgilenmemektedir. Bu sınıflar farklı library içerisinde yer alıyor da olabilir.

Facade tipi uygulamadan çıkarıldığında mevcut sistem bundan etkilenmemektedir. Çünkü Sınıfların tümü bağımsız ve tek başına da kullanılabilir bir yapıdadır.

Örnek uygulama:

namespace ConsoleApplication1

{

// Altsistem 1 class AltSistem1

{

public void Method1()

{

Console.WriteLine("Alt Sistem 1 Method1 ");

}

}


// Altsistem 2 class AltSistem2

{

public void Method2()

{

Console.WriteLine("Alt Sistem 2 Method 2");

}

}


// Facade class class Facade

{

private AltSistem1 _altSistem1; private AltSistem2 _altSistem2;


public Facade()

{

_altSistem1 = new AltSistem1();

_altSistem2 = new AltSistem2();


}


public void Method1()

{

Console.WriteLine("Method1() Çalıştırıldı");

_altSistem1.Method1();

}


public void Method2()

{

Console.WriteLine("Method2() Çalıştırıldı");

_altSistem2.Method2();

}

}


class Program

{

public static void Main()

{

Facade facade = new Facade(); facade.Method1(); facade.Method2(); Console.ReadKey();

}

}


}

Ekran Çıktısı Method1() Çalıştırıldı Alt Sistem 1 Method1 Method2() Çalıştırıldı Alt Sistem 2 Method 2

Görüldüğü gibi Facade desenini kodlarımızda bilinçli olarak kullanmasak da kodlama aşamasında mantıksal olarak yaptığımız bir ayrım olarak da belki daha öncede kullanmışızdır.

Yorum Yaz

Yorum yazabilmek için üye girişi yapmanız gerekiyor!

Yukarı Git