|
Singleton Tasarım Deseni |
|
Gönderiliyor lütfen bekleyin... |
|
|
Singleton,
oldukça sık kullanılan bir tasarım kalıbıdır. Bu kalıp, tüm tasarım kalıpları
ile karşılaştırıldığında, kullanımı en basit olan ve çok fazla kullanılan bir
tasarım kalıbıdır. Çok basit olması, önemi az olarak yorumlanmamalıdır çünkü genelde,
hayati yerlerde kullanılmaktadırlar. Singleton’ın yanlış kullanımı, sistemin göçmesine
neden olacaktır.
Tasarım
kalıpları yazısının üçüncü bölümünde SINGLETON kalıbının anlatılmasının yerinde
olacağını düşündüm. Yazılara gelen yorumlarınız ve mailleriniz makalelerin teknik
açıdan dengeli gittiğini gösteriyor. Bu yüzden yazılara aynı seviyede devam
edeceğiz.
SINGLETON,
isminden de anlaşılacağı üzere, bir sınıfa ait tek bir instance yaratma ve bu
instance’ı global yapmaktır. Peki bu ne anlama geliyor? Mesela yaratmış olduğunuz
bir sınıf olsun, bu sınıfın sadece ve sadece bir tane olması gerektiği bir sisteminiz
var. Bu durumda SINGLETON kalıbı ile bu koşulu garanti altına almış olursunuz.
SINGLETON ayrıca, bu tek olan sınıfa heryerden erişimin sağlandığını
da garanti eder.
Gercek
hayattan örneklememiz gerekirse, bir muhasebe sisteminde, ay sonu hesap kesimini
yapan bir sınıf, kredi kartı ile ödeme yapılan bir sistemdeki kredi kartı para
çekme işlemini yapan bir sınıf, uçak iniş kalkışlarının ayarlandığı uçuş yönetimini
sağlayan sınıf...
Gördüğünüz gibi pek çok durumda, anlatılan durumda bir koşul vardır. Bu durumların
hepsinde Singleton kalıbını kullanmak yazılımcının işini kolaylaştıracaktır.
!!
Singleton sınıfı, bir sınıftan sadece ve sadece bir tane olması gereken ve bu
sınıfa sistemdeki diğer tüm bileşenlerin ulaşması gereken durumlarda kullanılmalıdır.
Singleton
yapısına baktığımızda, tek olması gereken sınıfı kullanmak, yaratmak için özel
metodların oldugunu görürürüz. Bunun sebebi, sınıfın sistemin herhangi bir yerinde
izinsiz olarak yaratılmamasıdır.
KÜNYE
Isim:
SINGLETON
Amaç: Bir sınıftan sadece ve sadece bir tane yaratıp kontrolü
sağlamak.
Problem: Sistemde aynı işi yapan birden fazla yapı olması durumunda
ortaya çıkacak yanlışlıklar
Çözüm: Gerekli sınıfı yaratmayı kontrol altında tut ve sadece
bir tane yarat.
Birimler: Singleton sınıfı
Gerçekleştirim: Singleton sınıfını yarat, sınıfın instance’ını
yaratmayı kontrol altında tut.
Aşağıdaki
örnek kod, SINGLETON için kullanabileceğiniz, oldukça basit ama Singleton’ın
ne oldugunu çok iyi anlatan bir koddur:
class Singleton
{
public:
static Singleton *TekInstance();
protected:
Singleton();
private:
static Singleton *_TekInstance;
}
Singleton *Singleton::_TekInstance;
static Singleton
*TekInstance()
{
If (_TekInstance == 0) {
_TekInstance = new Singleton;
return
_TekInstance
}
}
|
Eğer siz de yukarıdaki koddaki gibi bir teknik kullanırsanız, istenilmeyen bir
ikinci "instance" yaratmak imkansız olacaktır. Koda daha yakında bakarsak, sınıfın
yaratılmasının sadece ve sadece bir yolu vardır, o da _TekInstance ’ın daha
önceden yaratılmamış olması, yani "0" olmasıdır. Bu durumda, "0" olduğu için
daha önceden bu sınıftan yaratılmamış oldugu ya da yaratıldıysa da yok edildiği
anlaşılacak yani sistemde sınıfın instance’ının olmadığı anlaşılacaktır. Böylelikle
istenilen durum sağlandığından yeni bir instance yaratılabilmektedir.
If sorgusuna girilmeden işlemler devam ederse, o anda bir instance oldugu anlaşılır
ve o varolan instance, geri döndürülür.
İşin güzel tarafı, sınıfınızı kullanmakta olan kişiler, sizin o sınıfı yarattığınızı
ya da var olan sınıfı geri döndürdüğünüzü bilmeyeceklerdir. İstenilen sınıfı
geri döndürme işlemini siz yaptığınız için "return" ile hangi pointer’ı döndürürseniz,
o sınıf kullanılmaya devam edecektir.
Singleton
ile ilgili diğer bir makale için tıklayınız.
Makale:
Singleton Tasarım Deseni Yazılım Mühendisliği Tanıl Ergin
|
|
|
-
-
Eklenen Son 10
-
Bu Konuda Geçmiş 10
Bu Konuda Yazılmış Yazılmış 10 Makale Yükleniyor
Son Eklenen 10 Makale Yükleniyor
Bu Konuda Yazılmış Geçmiş Makaleler Yükleniyor
|
|