"Enter"a basıp içeriğe geçin

Singleton Design Pattern

Singleton Design Pattern: Bir sınıfın yalnızca bir örneğinin oluşturulmasını sağlar ve bu örneğe genel bir erişim noktası sunar. Singleton design pattern, bir uygulamada yalnızca bir örneğin olması gerektiği durumlarda sıklıkla kullanılır. Örneğin bir sistemde sadece bir dosya yöneticisi olmasını istediğinizi varsayalım. Bu dosya yöneticisi, dosya oluşturma, okuma, yazma gibi işlemleri gerçekleştirecek. İşte bu senaryoda Singleton deseni kullanabiliriz.

import java.io.File;
import java.io.FileWriter;
import java.io.IOException;

public class FileManager {
    private static FileManager instance;
    private File file;

    // Constructor private tanımlayıp, örnek yaparken bir dosya oluşturuyoruz
    private FileManager() {
        try {
            this.file = new File("singleton_design_pattern.txt");
            if (!this.file.exists()) {
                this.file.createNewFile();
            }
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // Singleton örneğini döndüren method
    public static FileManager getInstance() {
        if (instance == null) {
            instance = new FileManager();
        }
        return instance;
    }

    // Dosyaya yazma methodu
    public void writeToFile(String content) {
        try (FileWriter writer = new FileWriter(this.file, true)) {
            writer.write(content + "\n");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // Dosya okuma methodu
    public String readFromFile() {
        // Burada dosyadan okuma işlemi gerçekleştirilebilir. Örneği basitleştirmek için metin döndürüyoruz.
        return "Bu dosyadan okunan bir metin.";
    }
}

Aşağıda ise Main classından Dosya Yönetcisini çağırabiliriz.

public class Main {
    public static void main(String[] args) {

        // Singleton Design Pattern
        singletonDesignPattern();
    }

    private static void singletonDesignPattern() {
        // singleton design pattern için dosya yöneticisi örneğini alma
        FileManager fileManager1 = FileManager.getInstance();
        FileManager fileManager2 = FileManager.getInstance();

        // İki dosya yöneticisi örneği aynı mı kontrolü
        System.out.println("İki dosya yöneticisi örneği aynı mı : " + (fileManager1 == fileManager2));  // Çıktı: true

        // Dosyaya yazma ve okuma işlemleri
        fileManager1.writeToFile("Dosya yazma test metni.");
        String content = fileManager2.readFromFile();
        System.out.println("Dosyadan okunan içerik : " + content);
    }
}

Bu örnekte, FileManager sınıfı, dosya oluşturma, yazma ve okuma işlemleri için kullanılabilir. Singleton design pattern, yalnızca bir dosya yöneticisi örneğine izin verir ve bu örneğe global bir erişim sağlar. Bu sayede uygulama içinde dosya işlemleri için tek bir noktadan yönetim sağlanır.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir