Adapter (Adaptör) Design Pattern

Adapter design pattern, birbiriyle ilişkili olmayan interface'lerin birlikte çalışmasına olanak sağlar. Genellikle mevcut(eski) sınıfların yapısını bozmadan diğer sınıflarla uyum içinde çalışması için uygulanır.

Çin'den yerli üretim bir telefon sipariş verdiniz ama şarj cihazı sizin evdeki prize uygun değil. Pakete dikkatli baktığınızda bir de içinden prizinize uygun adaptör çıktığını göreceksiniz. İşte bu adaptör bizim adapter pattern'in somut örneğidir.

Daha iyi kavramak için bir örnek yapalım.



Singleton (Tek Nesne) Design Pattern

Uygulama geliştirirken en popüler tasarım desenlerinden biri singleton yani tek nesne tasarım desenidir.

İsminden de anlaşılacağı üzere singleton tasarım deseni,  hazırlayacağımız sınıftan sadece bir örneğinin oluşturulmasını sağlar. Bu sayede nesnenin kopyalanmasını yada yeni bir tane oluşturmasını engeller ve nesneye ihtiyaç duyulduğunda o nesnenin daha önceden oluşturulan örneği çağırır.

Ne zaman kullanırız?

Veritabanı bağlantılarında, port bağlantılarında, yada dosya işlemleri gibi tek bir nesneye ihtiyaç duyduğumuz zamanlarda kullanırız.



Design Patterns (Tasarım Desenleri) Nedir?

Tasarım desenleri, sıkça karşılaşılan ve birbirine benzeyen sorunları çözmek için geliştirilmiş esnek kalıplardır. 
Nesne yönelimli programlamada, programlama dili gözetmeksizin; sınıf ve nesneler arasındaki ilişkilerin en iyi şekilde nasıl olmaları gerektiğini açıklayan yöntemlerdir. Kısaca aklın yolu bir diyerek uyguladığımız hazır çözümlerdir.



Laravel 5.1 Ajax CSRF Sorunu

Laravel 5.1 sürümünde ajax ile işlem yapmaya çalıştığınızda konsolda 500 (Internal Server Error) hatasını göreceksiniz. Bunun sebebi TokenMismatchException'dır yani bizim sayfamıza ulaşmadan önce Laravel 5 ile gelen Middleware bizden token istiyor. Göndermezsek de size cevap yok diyip kapatıyor kapıları. 

Çözüm:

Bunun çözümü gayet basit, ajax ile göndereceğimiz verilerin yanında token da göndereceksiniz. Bu işlem 2 şekilde yapılabilir.

Öncelikle formunuza _token isimli bir gizli input ekliyorsunuz ve değerine de laravel'in csrf_token() fonksiyonunu ekliyorsunuz. Yani aşağıdaki kod. Eğer laravel'in form sınıfını kullanıyorsanız bu input otomatik ekleneceği için eklemenize gerek yoktur.

 <input type="hidden" name="_token" value="{{ csrf_token() }}">

Sonra aşağıdaki jquery kodunu sayfanıza ekliyorsunuz.

$.ajaxSetup({
    headers: {
        'X-CSRF-TOKEN': $('input[name="_token"]').val()
    }
});

Bu kod; jquery ile gerçekleştirdiğiniz tüm ajax işlemlerine token gönderir. Bir diğer yöntem ise ajax işleminize _token anahtarınızı elinizle eklemek.