Strategy ve Factory Tasarım Kalıplarının Birlikte Kullanımı



1 dakikalık okuma
July 27, 2019

Factory Tasarım Kalıbında kullandığım örneği Strategy tasarım kalıbını da işin içine katarak genişletelim.

Evvela tekrardan bir “Car” interface’i oluşturulalım. Sonra bu interface’den diğer arabalarımızı implement edeceğiz.

 <?php

 interface Car
 {
     public function arabayiSur(): string;
 }

Daha sonra Tofas ve Mercedes arabalarımızı implement edelim aşağıdaki gibi:

 class Tofas implements Car
  {
     public function arabayiSur(): string
     {
         return "Tofaş arabayı sürüyorum";
     }
 }


 class Mercedes implements Car
  {
     public function arabayiSur(): string
     {
         return "Mercedes arabayı sürüyorum";
     }
 }

Buraya kadar tamam. Bu adımdan sonra Strategy tasarım kalıbını kullanarak bu nesneleri çalışma esnasında enjekte edecek şekilde ana kodumuzu aşağıdaki gibi yazalım:

 Class CarStrategy {

  private $strategy;

     Public __construct(Car $strategy) {

         $this->strategy = $strategy
     }

     Public function arabayiSur() {

            return $this->strategy->arabayiSur();

     }

 }

Şimdi Yukarıda Stategy tasarım kalıbını kullanarak kodladığımız sınıfı, CarFactory sınıfının içerisinde Factory Tasarım kalıbını kullanarak yazalım:

 Class CarFactory {

     Public static function arabaAl(bool $luks):Car {

          $car = new CarStrategy();


         if ($luks === true) {

             return $car->set_new_strategy(new Mercedes());
         }

         return $car->set_new_strategy(new Tofas());

     }

 }

Kullanımı:

 $car = CarFactory::arabaAl(true);
 echo $car->arabayiSur();

Bu kadar! Bu örnekle hem Strategy hem de Factory kalıbını bir arada kullanmış oldum.


Etiketler: