Singleton Pattern
[en] Read in English 2023-05-26
Bir zamanlar, Tekil Diyarı’nda bir hükümdar vardı. Hükümdarın adı “Singleton” idi ve o, tüm diyardaki tek varlık olma özelliğine sahipti. Singleton, diğer herkesi kendi benzersizlik ve tekliğini koruma konusunda eğitmişti.
Kendi krallığının tek hakimi olduğunda, Singleton, bir defa oluşturulduktan sonra bir daha değiştirilmeyen benzersiz bir varlık olma özelliğiyle tanındı. Krallığın her köşesinde, Singleton’un yalnızca bir kez oluşturulduğu ve yalnızca bir örneğin bulunduğu biliniyordu. Bu benzersiz özellik, Singleton’un krallığında hükmetmesini sağladı.
C# dilinde bu hikaye şu şekilde uygulanır:
public class Singleton
{
private static Singleton _instance;
private Singleton() {}
public static Singleton Instance
{
get
{
if (_instance == null)
{
_instance = new Singleton();
}
return _instance;
}
}
}
Java dilinde aynı hikaye:
public class Singleton {
private static Singleton instance;
private Singleton() {}
public static Singleton getInstance() {
if (instance == null) {
instance = new Singleton();
}
return instance;
}
}
Python dilinde:
class Singleton:
_instance = None
@staticmethod
def getInstance():
if Singleton._instance == None:
Singleton()
return Singleton._instance
def __init__(self):
if Singleton._instance != None:
raise Exception("This class is a singleton!")
else:
Singleton._instance = self
Go dilinde bu hikaye:
package singleton
import "sync"
var instance *Singleton
var once sync.Once
type Singleton struct{}
func GetInstance() *Singleton {
once.Do(func() {
instance = &Singleton{}
})
return instance
}
Rust dilinde bu hikaye:
use std::sync::Mutex;
pub struct Singleton {
//...
}
lazy_static! {
static ref SINGLETON: Mutex<Singleton> = Mutex::new(Singleton {
//...
});
}
pub fn get_instance() -> &'static Mutex<Singleton> {
&SINGLETON
}
Ve böylece, Singleton tasarım kalıbının hikayesi bu şekilde anlatılır. Singleton, bir sınıfın tek bir örneğini oluşturmanın ve tüm sisteme bu tek örneği sağlamanın bir yoludur. Bu genellikle global durumları yönetmek veya paylaşılan kaynakları kontrol etmek için kullanılır. Tekrar eden oluşturma işlemlerini önlemek, kaynakları verimli bir şekilde kullanmak ve sistem genelinde tutarlılık sağlamak için Singleton kalıbı kullanılır.