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.



Bu gibi daha fazla gönderi...

Bileşenlerin Dansı: Composite Tasarım Kalıbı

2023-06-22 | #composite-pattern #design-patterns #structural-patterns

Bir zamanlar, bir ormanda bir ağaç vardı. Bu ağaç, yaprakları ve dalları olan karmaşık bir yapıydı. Her dalın üzerinde daha küçük dallar ve yapraklar bulunabilirdi. Ağaç, dallarını ve yapraklarını bir arada tutan bir bütün olarak çalışıyordu. Bu ağaç, Composite tasarım kalıbının bir örneğidir. Ağaç (Composite), dallar (yine Composite) ve yapraklar (Leaf) olmak üzere iki tür bileşen içerir. Hem dallar hem de yapraklar, ağaç tarafından tanınan aynı arayüzü (Component) uygular. Bu sayede ağaç, dallarını ve yapraklarını aynı şekilde işleyebilir.

Devamı 


Köprüler Kurarak Esneklik Kazanın: Bridge Tasarım Kalıbı İle Çözümlemeler ve Dört Farklı Dilde Uygulamalar

2023-06-22 | #bridge-pattern #design-patterns #structural-patterns

Bir zamanlar, iki krallık varmış. Bu krallıklar birbirlerine çok yakın olmasına rağmen, aralarında geniş ve derin bir nehir bulunuyormuş. Bu nehir, krallıkların birbirleriyle etkileşim kurmasını zorlaştırıyormuş. Bu durumu çözmek için, her iki krallık da bir köprü inşa etmeye karar vermiş. Bu köprü, iki krallık arasında iletişimi sağlayan bir arayüz olmuş. Ancak, köprünün her iki tarafında farklı yapılar ve özellikler bulunuyormuş. Bir taraf taştan, diğer taraf ise ahşaptan yapılmış. Bu durum, köprünün her iki tarafının birbirinden bağımsız olarak değiştirilebilmesini sağlamış.

Devamı 


Dekoratör Tasarım Deseni: Yazılımın Süsleyicileri

2023-06-15 | #decorator-pattern #design-patterns #structural-patterns

Bir zamanlar, bir “Component” adında bir nesne varmış. Bu nesne, belirli bir işlevi yerine getirmek için kullanılırmış. Ancak, bazen bu işlevi genişletmek veya değiştirmek gerekiyormuş. İşte bu noktada “Decorator"lar devreye giriyormuş. Decorator’lar, Component’i “süsleyen” veya genişleten nesnelerdir. Bir Decorator, bir Component’in üzerine gelir ve onun işlevini genişletir veya değiştirir. Bu, Component’in kendisini değiştirmeden, onun işlevselliğini genişletmek için kullanılır. Örneğin, bir “TextComponent” düşünün. Bu component, bir metni ekrana yazdırır. Ancak, bazen metni kalın veya italik yapmak isteyebiliriz.

Devamı 