Harun Özer


Proje veya dijital katalog yaptırmak için
iletişim formu doldurabilirsiniz..

<< Decorator Tasarım Deseni - Decorator Design Pattern | Flyweight Tasarım Deseni - Flyweight Design Pattern>>

Facade Tasarım Deseni - Facade Design Pattern

Yazar harunozer 09 December 2012

Facade Tasarım Deseni - Facade Design Pattern Facade tasarım deseni; structural grubuna ait, alt sistemlerin direkt olarak kullanılması yerine alt sistemdeki nesneleri kullanan başka bir nesne üzerinden kullanılmasını sağlayan tasarım desenidir. Dofactory.com a göre en sık kullanılan tasarım desenlerinden birisidir.

Facade tasarım deseni uygulanması en basit tasarım desenlerinden birisidir. Örneğin uygulamamızda bazı modüller var ve bazı işlemlerin gerçekleştirilmesi için bu modüllerin kullanılması gerekiyor. Burada facade tasarım deseni kullanılarak clientın yani bu operasyonları gerçekleştirecek nesnenin kod karmaşasına bulaşmamasını sağlar ve farklı clientların olduğu uygulamalarda bu kodların tekrarlanmasını engellemiş olur. Sonuç olarak da anlaşılması daha kolay bir kodlama yapılmış olunur. Facade tasarım deseni için uml diyagramı aşağıdadır.

facade design pattern uml

Görüldüğü gibi client alt sisteme direkt erişmeyip, bu alt sistemi kullanan facade nesnesi üzerinden işlem yapıyor. Katman mimarisi olarak düşündüğümüzde clientın olduğu katmanda alt sistem referansı eklemeye gerek yoktur. Facade nin olduğu katmanda alt sistem referansları eklenmelidir.

Şimdi facade tasarım deseni ile ilgili ufak bir uygulama yapalım. Örnek senaryomuz şu şekilde olsun. Sistem1 ve sistem2 adında üyelik modülünün olduğu 2 sistemimiz var. Sistem2 ye üye olunacağında Sistem1 de kara listede olup olmadığını ve kimlik numarasının doğru olup olmadığını kontrol edip üyeliği buna göre kabul ediyoruz. Bu senaryoyu facade tasarım deseni ile gerçekleştirelim. Uygulamamızın sınıf diyagramı aşağıdadır.

facade design pattern class diagram

Uygulamamızın kodları aşağıdadır.


public class Sistem1Kontrol
{
    public bool KaraListeKontrol(string Tc)
    {
        //kontrol edildiğini varsayalım
        return false;
    }
}

public class Sistem2Operations
{
    public void UyeEkle(string Tc)
    {
        Console.WriteLine("{0} Üye Eklendi",Tc);
    }
}
public class TcKimlikSistem
{
    public bool Kontrol(string Tc)
    {
        //kontrol edildiğini varsayalım
        return true;
    }
}
public class Facade
{
    //constructor da oluşturulabilir
    //singleton olarak tasarlanabilir
    TcKimlikSistem TcSistem = new TcKimlikSistem();
    Sistem1Kontrol Sistem1 = new Sistem1Kontrol();
    Sistem2Operations Sistem2 = new Sistem2Operations();
    public void Sistem2UyeEkle(string Tc)
    {
        if (TcSistem.Kontrol(Tc) && !Sistem1.KaraListeKontrol(Tc))
        {
            Sistem2.UyeEkle(Tc);
        }
    }
}
class Program
{
    static void Main(string[] args)
    {
        Facade f = new Facade();
        f.Sistem2UyeEkle("123123");
        Console.ReadKey();
    }
}

Uygulamamızda ki sistem1Kontrol, Sistem2Operation ve TcKimlikSistem sınıfları alt sistemlerdir. Program yani client bu sınıfları direkt olarak kullanmayıp oluşturulan Facade sınıfı üzerinden kullanır.

Uygulama kodlarını aşağıdaki linkten indirebilirsiniz.

FacadeSample.rar

Tam Sayfa
Tags tasarım desenleri,
Kategoriler c#.net, Tasarım Desenleri
İşlemler
Bu Makale 5  Kez Beğenildi.
İsim :    
e-Mail :    
Web Site :  
İmage :  
Güvenlik Kodu :  

Güvenlik Resmi
Resmi Yenile
    
Yorum :  
Tasarım Desenleri ve Mimarileri