Yazılım geliştirmede, nesne oluşturma sürecini yönetmek ve somut nesnelerin nasıl oluşturulacağını belirlemek önemlidir. Bu yazıda, PHP Factory Method Design Pattern'ini örneklerle adım adım anlatmaya çalışacağım. Factory Method Design Pattern, bir nesne oluşturma sürecini alt sınıflara bırakarak nesnelerin nasıl oluşturulacağını, genişletme ve özelleştirme imkanı sağlamaktadır.
Factory Method Design Pattern, nesne oluşturma sürecini bir süper sınıfa taşırken, oluşturma işlemini alt sınıflara bırakan bir tasarım desenidir. Bu desen sayesinde nesne oluşturma sürecini değiştirmek, genişletmek veya özelleştirmek mümkün olur.
Factory Method Design Pattern, genellikle aşağıdaki bileşenleri içerir:
Şimdi bir örnek üzerinden Factory Method Design Pattern'in nasıl uygulandığını görelim. Örneğimizde bir araba fabrikası oluşturacağız ve farklı tipte arabalar üreteceğiz.
// Ürün (Product) arayüzü
interface Car {
public function drive();
}
// Somut Ürün (Concrete Product) sınıfları
class Sedan implements Car {
public function drive() {
echo "Sedan arabayla sürüş yapılıyor.\n";
}
}
class SUV implements Car {
public function drive() {
echo "SUV arabayla sürüş yapılıyor.\n";
}
}
// Yaratıcı (Creator) sınıfı
abstract class CarFactory {
// Factory Method
abstract public function createCar(): Car;
// Araba ile sürüş metodu
public function driveCar() {
$car = $this->createCar();
$car->drive();
}
}
// Somut Yaratıcı (Concrete Creator) sınıfları
class SedanFactory extends CarFactory {
public function createCar(): Car {
return new Sedan();
}
}
class SUVFactory extends CarFactory {
public function createCar(): Car {
return new SUV();
}
}
Şimdi Factory Method Design Pattern'i kullanarak arabaları üretelim.
// Kullanım örneği
$sedanFactory = new SedanFactory();
$sedanFactory->driveCar(); // Sedan arabayla sürüş yapılıyor.
$suvFactory = new SUVFactory();
$suvFactory->driveCar(); // SUV arabayla sürüş yapılıyor.
Factory Method Design Pattern, nesne oluşturma sürecini alt sınıflara bırakarak nesnelerin nasıl oluşturulacağını genişletme ve özelleştirme imkanı sağlar. Factory Method Design Pattern, esnek bir nesne oluşturma süreci sağlar ve yeni nesne türlerinin kolayca eklenmesine olanak tanır. Bu deseni kullanarak, kodunuzun daha esnek, genişletilebilir ve sürdürülebilir olmasını sağlayabilirsiniz.