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

Kategori: Design Patterns

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.

Yorum Bırak

Creational Design Patterns

Creational Patterns (Yaratıcı Desenler) bahsedecek olursak, yeni nesnelerin(objects) nasıl oluşturulacağına ve başlatılacağına ilişkin problemleri ele alır. Bu desenler, nesnelerin oluşturulmasını, başlatılmasını ve yönetilmesini daha esnek ve modüler hale getirerek, uygulamanın yapısını geliştirilmesini benimser. Kullanılan creational patternler:

  1. Singleton Design Pattern (Tekil Örnek Tasarım Deseni): 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.
  2. Factory Method Design Pattern (Fabrika Yöntemi Tasarım Deseni): Bu pattern, bir arayüz sağlar ve alt sınıfların bu arayüzü uygulayarak nesneleri oluşturmasını sağlar. Bu sayede, nesne oluşturma işlemi istemciden gizlenir. Böylelikle alt sınıfların nesne oluşturma mantığını değiştirmesi kolaylaşır. Factory Method, nesnelerin oluşturulmasıyla ilgili kararların alt sınıflara devredilmesi gerektiği durumlarda kullanılır.
  3. Abstract Factory Design Pattern (Soyut Fabrika Tasarım Deseni): Bir nesne ailesi oluşturmak için soyut bir arayüz sağlar. Ardından, bu arayüzü uygulayan farklı fabrika sınıfları, farklı nesne ailelerini oluşturabilir. Bu pattern ile ilgili nesne gruplarının bir arada kullanılması gerektiği durumlarda kullanılır ve sistemlerin daha kolay genişletilmesini sağlar.
  4. Builder Design Pattern (Oluşturucu Tasarım Deseni): Karmaşık nesnelerin adım adım oluşturulmasını sağlar. Nesne oluşturma süreci, adım adım yönlendirilir ve nesne oluşturmayı karmaşık bir yapıdan ayırır. Builder design patterni, nesnelerin farklı bileşenlerinin aynı oluşturulma sürecini kullanarak farklı nesne varyasyonlarını oluşturmak için kullanışlıdır.
  5. Prototype Design Pattern (Prototip Tasarım Deseni): Mevcut bir nesnenin klonlanması ile yeni bir nesne oluşturmayı sağlar. Bu pattern, nesnelerin türetilmesi maliyetli veya zor olduğunda kullanışlıdır. Özellikle, büyük nesne oluşturma maliyeti varsa veya nesnelerin durumu dinamik olarak değişiyorsa kullanışlı olabilir.

Bu creational design patternler ile nesne oluşturma sürecini daha modüler ve esnek hale getirir, böylece kodun daha okunabilir, bakımı daha kolay ve yeniden kullanılabilir olmasını sağlar.

Yorum Bırak

Design Patterns Nedir?

Tasarım desenleri(design patterns), yazılım geliştirme sürecinde karşılaşılan belirli problemleri çözmek için geliştirilmiş özgün ve yenilikçi çözüm stratejileridir. Bu patternler, yazılım geliştiricilere test edilmiş ve kanıtlanmış bir yaklaşım sunarak, tekrar kullanılabilirlik ve kodun daha organize ve bakımı kolay olmasını sağlar. Creational Design Pattern, Structural Design Patterns ve Behavioral Design Patterns olmak üzere üç ana kategori altında toplanır. Her bir pattern, belirli bir soruna odaklanır ve genellikle modüler ve esnek bir yapı sağlar, böylece yazılım projelerinin geliştirilmesi ve bakımı daha verimli hale gelir.

Creational Design Patterns (Yaratıcı Desenler) bahsedecek olursak, yeni nesnelerin(objects) nasıl oluşturulacağına ve başlatılacağına ilişkin problemleri ele alır. Bu patternler, nesnelerin oluşturulmasını, başlatılmasını ve yönetilmesini daha esnek ve modüler hale getirerek, uygulamanın yapısını geliştirilmesini benimser.

Structural Design Patterns (Yapısal Tasarım Desenleri), sınıfların ve nesnelerin bir araya getirilmesi ve ilişkilendirilmesi ile ilgili problemleri ele alır. Bu patternler, bir yazılım sisteminin bileşenlerinin nasıl bir araya getirileceğini ve nasıl çalışacaklarını tanımlar.

Behavioral Design Patterns (Davranışsal Desenler), nesneler arasındaki etkileşim ve sorumlulukları yönetme ile ilgili problemleri ele alır. Bu patternler, bir yazılım sisteminde nesnelerin nasıl bir araya gelip nasıl birlikte çalışacağını belirlemeye yardımcı olur.

Yorum Bırak