Merhaba arkadaşlar.İş hayatına ilk başladığım zaman acemilikten olsa gerek Design Pattern'lere karşı bir önyargım vardı. Ancak işin içine daha çok girdikçe önemini anladım ve şu an hayranlıkla araştırıp elimden geldiğince kullanmaya çalışıyorum.
Bu makalede, Laravel içinde sıkça kullanılan tasarım desenlerinden biri olan Singleton Pattern'ı ele alacağız. Singleton Pattern, bir sınıfın yalnızca bir örneğine sahip olmasını sağlayan bir tasarım desenidir. Laravel'da Singleton Pattern, özellikle uygulama boyunca bir kez oluşturulması gereken nesneleri yönetmek için yaygın olarak kullanılır.
Singleton Pattern, bir sınıfın yalnızca bir örneğine sahip olmasını sağlayarak, bu örneğe global erişim imkanı tanıyan bir tasarım desenidir. Bu, sınıfın tek bir noktadan kontrol edilebilmesini ve sınıfın tek bir örneğinin oluşturulmasını garanti eder. Laravel'da Singleton Pattern, genellikle servis konteyneri ve bağımlılık enjeksiyonu ile birlikte kullanılır.
Laravel'da Singleton Pattern'ı uygulamak için, genellikle bir servis sağlayıcı kullanılır. Servis sağlayıcılar, uygulamanın çeşitli bileşenlerini kaydetmek ve yapılandırmak için kullanılır. Aşağıda, bir örnek üzerinden Laravel'da Singleton Pattern kullanımını adım adım açıklayacağız.
Hayal edin ki bir kafe işletiyorsunuz ve kafede sadece bir tane özel kahve çekirdeği karışımı bulunuyor. Bu özel karışım, kafede sipariş alındığında kullanılıyor ve her müşteriye aynı kalitede kahve deneyimi sunuyor. İşte bu durumu Laravel'da Singleton Pattern'ı kullanarak nasıl uygulayabiliriz, bakalım.
İlk olarak, bu özel kahve karışımını temsil edecek bir Singleton oluşturmak için bir servis sağlayıcı oluşturalım.
php artisan make:provider CoffeeBlendProvider
Oluşturduğumuz servis sağlayıcı dosyasını açalım ve kahve karışımını temsil eden bir Singleton tanımlayalım.
// app/Providers/CoffeeBlendProvider.php
namespace App\Providers;
use Illuminate\Support\ServiceProvider;
class CoffeeBlendProvider extends ServiceProvider
{
public function register()
{
$this->app->singleton('coffeeBlend', function () {
return new \App\CoffeeBlend;
});
}
}
Artık kahve karışımını uygulama içinde kullanabiliriz. Örneğin, bir kahve siparişi alındığında bu Singleton'ı kullanarak özel kahve karışımını hazırlayabiliriz.
// app/Http/Controllers/CoffeeController.php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\CoffeeBlend;
class CoffeeController extends Controller
{
public function prepareCoffee()
{
$coffeeBlend = app('coffeeBlend');
// $coffeeBlend, özel kahve karışımını temsil eder
// Burada kahve hazırlama işlemleri yapılır
}
}
Bu örnekte Singleton Pattern'ını kullanmanın avantajları şu şekilde öne çıkıyor:
Laravel'da Singleton Pattern, işte bu kafe senaryosunda olduğu gibi özellikle tek bir örneğe ihtiyaç duyulan durumları ele almak için güçlü bir araçtır. Bu deseni doğru bir şekilde uygulamak, koddaki tekrarı azaltır ve uygulamanın bakımını kolaylaştırır. Ancak, Singleton Pattern'ını aşırı kullanmaktan kaçınılmalı ve ihtiyaca dayalı olarak tercih edilmelidir.