Facade Tasarım Deseni (Facade Pattern)

20 Nisan 2016 4 dk okuma süresi 196 okunma

Facade deseni, class kullanımını seviyelendiren bir tasarım desenidir. Basitçe herhangi bir class/fonksiyon içinden diğer class/fonksiyon'ları çağırmaya yarayan desendir. Facade deseni sistem karmaşıklığını gizler ve client(istemci)'nin sisteme erişmesini sağlayan bir arabirim görevi üstlenir. Bu desen bir grup class'ı ve özelliklerini (fonksiyon/değişken vb.) içeren tek bir ana sınıf olarak görev yapar.

Eğer elinizde birden fazla parçadan oluşan modül varsa ve bunlar hem bir bütün olarak hem de kendi başlarına çalışıyorsa facade desenini kullanmalısınız. Örnek olarak string class'ını düşünün. String class'ının içerisinde length(), substring(), contains() gibi fonksiyonlar vardır. Bunları kullanmak için tek bir ana string class'ı vardır ve alt fonksiyonlara bu ana class ile erişim sağlanır. string.length(), string.contains() gibi.

class Araba
{
    private Model _model = new Model();
    private Motor _motor = new Motor();
    private Govde _govde = new Govde();
    private Ozellikler _ozellikler = new Ozellikler();

    public void ArabaOlustur()
    {
        // Araba olusturuluyor
        
        _model.ModelOlustur();
        _motor.MotorOlustur();
        _govde.GovdeOlustur();
        _ozellik.OzellikOlustur();
        
        // Araba olusturuldu
    }
}
    
class Model
{
    public void ModelOlustur()
    {
        // araba modeli Olusturuldu
        Console.WriteLine("Model Olusturuldu.");
    }
}

class Motor
{
    public void MotorOlustur()
    {
        // araba motoru Olusturuldu
        Console.WriteLine("Motor Olusturuldu.");
    }
}

class Govde
{
    public void GovdeOlustur()
    {
        // araba govdesi Olusturuldu
        Console.WriteLine("Govde Olusturuldu.");
    }
}

class Ozellikler
{
    public void OzellikOlustur()
    {
        // araba ozellikleri Olusturuldu
        Console.WriteLine("Ozellikler Olusturuldu.");
    }
}

class Program
{
    public void Main()
    {
        // facade yerine istediginiz kelimeyi yazabilirsiniz
        // facade deseni kullanarak temiz ve anlasilabilir bir kod yazmis oluyoruz
        var facade = new Araba();
        facade.ArabaOlustur();
        

        // facade desenini kullanmasaydik tek tek cagirmak zorunda kalacaktik ve kod fazlaligi ve karisikligi olacakti
        var model = new Model();
        model.ModelOlustur();
        var motor = new Motor();
        motor.MotorOlustur();
        var govde = new Govde();
        govde.GovdeOlustur();
        var ozellik = new Ozellikler();
        ozellik.OzellikOlustur();
    }
}


Yazılarıma abone olmak ister misiniz?
Spam yapılmaz, sadece bildirim amaçlıdır. İstediğiniz zaman abonelikten çıkabilirsiniz.
İlginizi çekebilecek diğer yazılar.
Singleton tasarım deseni nedir? Singleton tasarım deseni ne amaçla kullanılır?