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.
Yorum Bırak