Facade Tasarım Deseni (Facade Pattern)
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(); } }