PHP ile Facade Pattern: Karmaşık Sistemleri Basitleştir

 


Facade Pattern (Cephe/Sadeleştirici Desen), karmaşık sistemleri basit bir arayüzle dış dünyaya sunmak için kullanılır.

Kullanıcıya birden fazla sınıfla uğraşmak yerine, tek bir sınıf üzerinden kolay erişim imkânı sağlar.


Neden Kullanılır?

  • Karmaşık alt sistemleri bir arayüz altında toplamak

  • Kullanıcıdan teknik detayları saklamak

  • Kodun okunabilirliğini ve bakımını artırmak


Nerelerde Kullanılır?

  • Laravel’deki Facade sınıfları (Cache::put(), Mail::send(), DB::table())

  • API istemcileri (Google, Stripe, Mailchimp gibi servislerin facade sınıfları)

  • Karmaşık sınıf yapılarının soyutlanmasında (örneğin medya oynatıcı, sipariş işlemleri)




PHP ile Facade Pattern Örneği

Senaryo: Bir video oynatma sistemi. Arka planda birçok sınıf var ama kullanıcı sadece VideoPlayer sınıfını kullanacak.

1. Alt sistem sınıfları:

<?php
class FileLoader {
public function load($filename) {
echo "Dosya yüklendi: $filename\n";
}
}

class VideoDecoder {
public function decode($filename) {
echo "Video çözüldü: $filename\n";
}
}

class AudioManager {
public function enableAudio() {
echo "Ses açıldı\n";
}
}



2. Facade sınıfı:


<?php
class VideoPlayer {
protected $fileLoader;
protected $decoder;
protected $audio;

public function __construct() {
$this->fileLoader = new FileLoader();
$this->decoder = new VideoDecoder();
$this->audio = new AudioManager();
}

public function play($filename) {
$this->fileLoader->load($filename);
$this->decoder->decode($filename);
$this->audio->enableAudio();
echo "Video oynatılıyor: $filename\n";
}
}



Kullanım:

<?php
$player = new VideoPlayer();
$player->play("film.mp4");


Çıktı:


Dosya yüklendi: film.mp4  
Video çözüldü: film.mp4
Ses açıldı
Video oynatılıyor: film.mp4


Avantajları

  • Karmaşık işlemleri kullanıcıdan gizler

  • Controller/Service tarafında kod karmaşasını azaltır

  • Daha sade, okunabilir ve sürdürülebilir yapı sağlar

  • Test yazarken kolayca izole edilebilir


Dezavantajları

  • Aşırı kullanım, sistemi gereksiz soyut hale getirebilir

  • Alt sistemlere erişimi tamamen gizlerse, bazı özel işlemler zorlaşabilir


Facade vs Diğer Desenler

DesenAmaç
StrategyFarklı algoritmaları değiştirmek
DecoratorDinamik olarak özellik eklemek
FacadeKarmaşık yapıyı basitleştirip sarmalamak


Özet

  • Facade Pattern, sistemdeki çoklu işlemleri sadeleştirerek tek bir arayüz ile sunmanı sağlar.

  • Laravel, bu deseni birçok yerde kullanır (örneğin: DB::table(), Log::info())

  • Kodun okunabilirliğini artırır, bakım maliyetini azaltır.


Related Posts

PHP ile Facade Pattern: Karmaşık Sistemleri Basitleştir
4/ 5
Oleh