Junior
Singleton deseni nedir?
sobes.tech yapay zeka
AI'dan gelen yanıt
Singleton, yalnızca bir örneği olan ve bu örneğe küresel erişim noktası sağlayan yaratıcı bir tasarım desenidir. Paylaşılan bir kaynak veya durumu yönetmek için tek bir nesneye ihtiyaç duyulduğunda kullanılır.
Çalışma prensibi:
newkullanarak yeni örneklerin oluşturulmasını engellemek için özel yapıcı.- Tek örneği saklamak için özel statik alan.
- Örneğe erişim sağlayan genel statik yöntem:
- Örneğin oluşturulup oluşturulmadığını kontrol eder.
- Oluşmadıysa, oluşturur ve statik alanda saklar.
- Oluşturulan veya mevcut örneği döner.
Java örneği:
public class Singleton {
// Örneği saklamak için özel statik alan
private static Singleton instance;
// Özel yapıcı
private Singleton() {
// Gerekirse başlatma
}
// Örneğe erişmek için genel statik yöntem
public static Singleton getInstance() {
// Tembel başlatma için null kontrolü
if (instance == null) {
// Çoklu iş parçacığı güvenliği için senkronizasyon
synchronized (Singleton.class) {
// Çift kontrol (Double-Checked Locking)
if (instance == null) {
instance = new Singleton();
}
}
}
return instance;
}
// Singleton iş mantığı
public void doSomething() {
System.out.println("Singleton örneği bir şeyler yapıyor.");
}
}
QA Otomasyonunda Uygulama:
- Test yapılandırma ayarlarının yönetimi (özellik dosyaları, ortam değişkenleri).
- Tüm testlerde aynı sürücü kullanıldığında tarayıcı sürücüsünün (WebDriver) tek örneği.
- Günlük veya rapor yöneticisi.
- Veritabanı bağlantı havuzu.
Avantajlar:
- Sadece bir örneğin olmasını garanti eder.
- Örneğe kolay erişim sağlar.
- Tembel başlatma (sadece ilk talepte oluşturulur).
Dezavantajlar:
- Bağımlılıkları gizleyebilir.
- Singleton küresel bir durum olduğu için birim testlerini zorlaştırabilir.
- Tek sorumluluk ilkesini ihlal eder (sınıf kendi mantığı ve yaşam döngüsü yönetimiyle sorumlu olabilir).
- Doğru uygulanmazsa çoklu iş parçacığı sorunları ortaya çıkabilir.