• Çar. Tem 6th, 2022

Merhabalar arkadaşlar. Bu yazıda Singleton Design Pattern hakkında size bilgi vermeye çalışacağım.

Projelerimiz çoğunlukla gelen parametrelere göre farklı şekilde çıktılar üretecek şekilde yazılsalar bile projenin bazı kısımlarında ne olursa olsun standart çıktıyı vermesi gerekir. Örneğin diyelim ki bir üyelik sistemi projeniz var ve bu üyelik sistemi içerisinde kullanıcı bir hareket gerçekleştirdi. Bu gerçekleşen hareketin tarihini, saatini vs. kaydetmeniz gerekiyor. İşte bu durumda sistem kullanıcıya özel bir veri değil standart bir veri üretmesi gerekir. Bu durumda da Singleton Design Pattern uygulanarak bu ihtiyaç karşılanabilir.

Şimdi Java dili ile basit bir şekilde Singleton Design Pattern kullanımını örnekleyelim.

package com.ilkaygunel.singleton;

import java.time.ZoneOffset;
import java.time.ZonedDateTime;

public class SingletonDesignPattern {
    
    private static SingletonDesignPattern instance;
    private SingletonDesignPattern(){
        
    }
    
    public static synchronized SingletonDesignPattern getInstance(){
        if (instance == null) {
            instance = new SingletonDesignPattern();
        }
        return instance;
    }
    
    public ZonedDateTime getUTCDateTime(){
        ZonedDateTime now = ZonedDateTime.now(ZoneOffset.UTC);
        return  now;
    }
    
}

SingletonDesignPattern sınıfımızı inceleyelim:

  • Az önce de bahsettiğim gibi Singleton Design Pattern uygulanacağı zaman kullanıcıya ya da parametreye bağlı olarak çıktı üretilmeyeceği yani herkes için standart bir akış uygulanacak demektir. Bu durumda bu pattern’in uygulandığı sınıf nesnesinin static olması bizim için iyidir. Biz de bunun için instance* nesnemizi static olarak tanımladık.
  • Sınıfımızın constructor’ını Thread Safe bir mekanizma oluşturmak için private olacak şekilde tanımladık.
  • getInstance() metodumuz bize bu sınıftan bir nesne üretip verecek bir metotdur. Yine Thread Safe bir mekanizma için metodumuz synchronized olarak tanımlı. Metodun tek görevi bize sınıftan nesne sunmak olduğu için static olarak olarak tanımlanmasında sakınca yoktur. Metot içerisinde az önce tanımladığımız instance nesnemiz null ise yenisini oluşturup, değilse var olanı bize verecek şekilde kodumuzu yazıyoruz.
  • getUTCDateTime() metodu da şu anki zamanı UTC diliminde bize verecek metotdur. Türkiye UTC+3’de yer aldığı için şu anki zamandan 3 saat öncesini bize verecektir metot.

MainClass.java

package com.ilkaygunel.singleton;

public class MainClass {
    public static void main(String[] args) {
        SingletonDesignPattern instance = SingletonDesignPattern.getInstance();
        System.out.println(instance.getUTCDateTime());
    }
}

MainClass içerinse SingletonDesignPattern sınıfı içindeki static getInstance metoud üzerinden nesnemizi elde ediyoruz ve konsola UTC zamanı yazdırıyoruz.

Ekran Çıktısı

MainClass’ı çalıştırdığımda konsol çıktım şu şekilde olmakta:

Gördüğümüz gibi saat 20:21 olmasına karşın UTC date time istediğimiz için saat 17:21 olarak geliyor.

Bu yazıda anlatacağım bu kadar arkadaşlar. Singleton Design Pattern kullanımını örneklemiş olduk.

Başka bir yazıda görüşene kadar sağlıcakla kalın.

Görüşmek üzere.

Selam ve Sevgilerimle

Merhaba! Ben İlkay Günel :) İstanbul Üniversitesi Bilgisayar Mühendisliği 2016 mezunuyum. Güncel olarak Paycore'da SoftPOS projesinde Java Developer olarak çalışmaktayım. Büyük oranda Java teknolojileri ile uğraşıp kendimi geliştirmeye çalışıyorum ve bu mecrada öğrendiklerimi sizle paylaşmaya da çabalıyorum :) Hakkımda biraz daha detaylı bilgi için: http://www.ilkaygunel.com/about/

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir