Structural Design Patterns - Facade Design Pattern
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" });