Bu site emekli olmuştur. Arşiv amaçlı olarak BT AKADEMİ sponsorluğunda yayın hayatına devam etmektedir.




C#nedir?com
 
YAZAR HAKKINDA
Tanıl Ergin
Tanıl Ergin
http://www.csharpnedir.com/
İletişme geçmek için tıklayın.
21 Makalesi yayınlanmakta.
Yazar hakkında detaylı bilgi için tıklayın.
Yayınlanan diğer makaleleri için tıklayın.
İlgili etiketler: gereken instance kalibidir. kaliplari kullanilan oldugu olmasi olmasi singleton singleton’in sinifa sinifi sinifin siniftan tasarim Yazılım Müh. Tanıl Ergin
 
YAZI HAKKINDA
Türü : Makale
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
Seviyesi : Orta
Kategori : Yazılım Müh.
Yayınlanma Tarihi : 14.12.2004
Okunma Sayısı : 46278
Yorum Sayısı : 0     yorum yaz
Site İçi AramaSİTE İÇİ ARAMA
Üye Girişini AçÜye GİRİŞİ
Üye girişi için tıklayın.
Kullanıcı Adı
Şifre
 
Beni her zaman hatırla
Bir hafta boyunca kullanıcı bilgilerinizi kullanıcı çıkışı yapana kadar hatırlar. (Paylaşılan bilgisayarlarda önerilmez.)
 
Şifremi / Kullanıcı Adımı unuttum.
 
.net TV RSS Serbest KÖŞE (?)
Serbest Köşede C#nedir?com üyelerinin hazırladıkları yazılar yayınlanır. Bu yazılar editör incelemesine girmeden yayınlanır.
emre TAŞ
Silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
emre TAŞ
silindi
emre TAŞ
yazının devamı >
Makale Gönder Bende Yazmak İstiyorum
.net TV RSSBlogroll
Turhal Temizer
Conda install environment.yml Package 22.12.2024
Turhal Temizer
Mac OS/X Removing CUDA 22.12.2024
  Diğer Herşey
Sponsorlar
BT Akademi
Medya Portakal
Video Hosting Sponsoru
Csharpnedir.com bir Ineta üyesidir
Uzman Abi
Her Yönüyle C# - Sefer Algan
Singleton Tasarım Deseni
 
Kapat
Sayfayı Yazdır Sık Kullanılanlara Ekle Arkadaşıma Gönder MySpace Del.Ico.Us Digg Facebook Google Mixx Reddit StumbleUpon
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
  • Yazılan Yorumlar
  • Yorum Yaz
Bu konu hakkında yayınlanan yorum bulunmamaktadır.
"Yorum Yaz" tabını kullanarak sizde yorumlarınızı yazabilirsiniz.
Yorum yazabilmek için üye girişi yapmalısınız. Üye girişi için tıklayın.
Üye değilseniz Üyel Ol linkine tıklayarak üyeliğinizi hemen başlatabilirisniz.
 
  • Bu Konuda Son 10
  • 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