Singleton Pattern Nedir ? Nasıl Kullanılır ? Laravel Singleton Pattern Kullanımı

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 Nedir?

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 Kullanımı:

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.

Laravel'da Singleton Pattern: Kafe Uygulaması Örneği

Senaryo:

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.

Adım 1: Servis Sağlayıcı Oluşturma

İ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

Adım 2: Singleton Tanımlama

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;
        });
    }
}

Adım 3: Singleton Kullanma

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:

  1. Tek Bir Kahve Karışımı: Singleton Pattern, kahve karışımının yalnızca bir defa oluşturulmasını ve tüm siparişlerde aynı kalitede kahve sunulmasını garanti eder.
  2. Tek Noktadan Yönetim: Kahve karışımının özellikleri veya içeriği değişirse, bu değişiklik sadece Singleton içinde yapılabilir, böylece tüm uygulama bu değişiklikten etkilenir.
  3. Daha Etkili Kaynak Kullanımı: Tek bir özel kahve karışımı oluşturmak, gereksiz kaynak tüketimini önler ve kafedeki kahve deneyimini standartlaştırır.


Sonuç

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.

YAZAR HAKKINDA

26 Yaşında. Araştırmayı seven, bir şeyler öğretmeye meraklı bir Bilgisayar Mühendisi

0 YORUM

Bu konuya henüz yorum yapılmamış

Yorum Yap

@COPYRIGHT KodlamakLazım Tüm Hakları Saklıdır.