20.04.2023
23
Beğenme
1520
Görüntülenme
Tasarım deseni, doğrudan koda dönüştürülebilen bitmiş bir tasarım değildir. Birçok farklı durumda kullanılabilecek bir sorunun nasıl çözüleceğine ilişkin bir açıklama veya şablondur.Hazır fonksiyonlar veya kütüphaneler gibi kopyalayıp kodunuza uygulayamazsınız. Model, belirli bir kod parçası değil, belirli bir sorunu çözmek için genel bir kavramdır.
Kalıplar genellikle algoritmalarla karıştırılır, çünkü her iki kavram da bilinen bazı sorunlara tipik çözümleri tanımlar. Bir algoritma her zaman bir hedefe ulaşabilecek net eylemleri tanımlarken, bir tasarım deseni bir çözümün daha üst düzey bir açıklamasıdır. İki farklı programa uygulanan aynı modelin kodu farklı olabilir.
Oluşturucu tasarım desenleri,kodun esnekliğini ve tekrar kullanılabilirliğini arttıran çeşitli nesne oluşturma mekanizmaları sağlar.
Singleton modeli, Single Responsibility Principle'ı ihlal ederek aynı anda iki sorunu çözer:
Nasıl çalışır ?
Diyelim ki bir nesne oluşturdunuz,daha sonra başka bir yerde daha bu nesneye ihtiyacınız oldu ve yeniden yaratmaya karar verdiniz.Bu noktada size yeni bir nesne yerine var olan nesne dönecektir.
Bu davranış normal bir oluşturucu (constructor) ile mümkün değildir, çünkü tasarımı gereği oluşturucular her zaman yeni bir nesne döndürmek zorundadır.
İstemciler her zaman aynı nesneyle çalıştıklarının farkında bile olmayabilirler.
Singleton deseninin tüm implementasyonları şu 2 adıma sahiptir :
Kodunuzun singleton sınıfına erişimi varsa singleton'ın statik metoduna da erişebilir.Bu metod her çağrıldığında aynı nesneyi döndürecektir.
Singleton deseni private oluşturma yöntemi dışında nesne oluşturulmasını engeller.Bu yöntem ya yeni bir nesne oluşturur yada daha önce var olan nesneyi döndürür.
Global değişkenlerin aksine singleton deseni bir sınıfın her zaman bir instance'ı olacağını garanti eder.Bu sınırlamayı her zaman ayarlayabileceğinizi ve istediğiniz sayıda Singleton instance'ının oluşturulmasına izin verebileceğinizi unutmayın. Değiştirilmesi gereken tek kod parçası, getInstance yönteminin gövdesidir.
YAPI
Desene ait yukarıdaki diyagrama bakacak olursak, örneğini istediğimiz sınıfın;
private olmalıdır. Bunun amacı nesne oluşumunu tek yerden sağlamak. İstemcinin, new anahtar kelimesini kullanması engellemektir.
Static bir değişken olmalıdır, referansı tutmak için.
Tutulan referansa erişmek için bir metot olmalıdır, getInstance()
ARTILARI EKSİLERİ
Singleton deseni ile farklı kodlama türlerindeki örneklerini görmek için ;
https://refactoring.guru/design-patterns/singleton,
https://www.tutorialspoint.com/design_pattern/ linklerinden yararlanabilirsiniz.
Ayrıca daha detaya inerek farklı implementasyonları görmek için ;
https://www.geeksforgeeks.org/singleton-design-pattern/ adresinden inceleyebilirsiniz.
***Bu içerik
https://sourcemaking.com,https://refactoring.guru,https://www.geeksforgeeks.org
adreslerinden tercüme edilerek ve derlenerek oluşturulmuştur.Yazının devamında Factory tasarım deseninden bahsedeceğim,görüşmek üzere ...
Linkedin : https://www.linkedin.com/in/mina-dilek/
Kullanıcı yorumlarını görüntüleyebilmek için kayıt olmalısınız!