Structural Design Patterns - Facade Design Pattern

Selim Selçuk
1 min readDec 25, 2021

Bu tasarım kalıbı üzerine konuşmak yerine örnek ile anlamaya çalışalım. Örnek şu şekilde;

Ülkemizde futbol müsabakalarına bilet alabilmek için bir çok kontrol var. Örneğimizde bunlardan 2 tanesine değinelim.

1- Covid karantinasında bulunan kişi müsabakalara bilet alamaz. Bu sorgulamayı SağlıkBakanlığı aracılığı ile sağlayacağız.
2- 6222 cezası bulunan kişi de müsabakalara bilet alamaz. Bu sorgulamayı da Emniyet teşkilatı ile sağlayacağız.

PassoLig ise biletlerin alınabildiği platform. Classlarımız şu şekilde olacak;

Taraftar
SaglikBakanligi
Emniyet
PassoLig
Facade

Taraftar Class;

class Taraftar
{
public string Isim { get; set; }
public string Soyisim { get; set; }
public string TcKimlikNumarasi { get; set; }
}

SaglikBakanligi Class;

class SaglikBakanligi
{
public bool covidKarantinaKontrol(string tcKimlikNumarasi)
{
return false;
}
}

Emniyet Class;

class Emniyet
{
public bool ceza6222Kontrol(string tcKimlikNumarasi)
{
return false;
}
}

PassoLig Class;

class PassoLig
{
public string biletVer(string tcKimlikNumarasi)
{
return "Biletin tanımlandığı T.C. Kimlik numarası; " + tcKimlikNumarasi;
}
}

Facade Class;

class Facade
{
private PassoLig passoLig;
private Emniyet emniyet;
private SaglikBakanligi saglikBankaligi;
public Facade()
{
passoLig = new PassoLig();
emniyet = new Emniyet();
saglikBankaligi = new SaglikBakanligi();
}
public void biletIslemleri(Taraftar t)
{
if (saglikBankaligi.covidKarantinaKontrol(t.TcKimlikNumarasi) == false && emniyet.ceza6222Kontrol(t.TcKimlikNumarasi) == true)
{
passoLig.biletVer(t.TcKimlikNumarasi);
}
else
{
Console.WriteLine("Cezalısınız ya da karantinadasınız. Maça bilet alamazsınız. ");
}
}
}

Main Method;

Facade facade = new Facade();
facade.biletIslemleri(new Taraftar { Isim = "", Soyisim = "", TcKimlikNumarasi = "12345678901" });

--

--