Sobes.tech
Junior — Middle

შეგიძლიათ გამოიტანოთ მაგალითები Singleton დიზაინის ნიმუშის სხვადასხვა განხორციელების გზების შესახებ?

sobes.tech AI

პასუხი AI-სგან

Java-да Singleton ნიმუშს რამდენიმე გზით შეიძლება განახორციელოს:

  1. სელანული ინიციალიზაცია სინქრონიზაციით
public class Singleton {
    private static Singleton instance;

    private Singleton() {}

    public static synchronized Singleton getInstance() {
        if (instance == null) {
            instance = new Singleton();
        }
        return instance;
    }
}
  1. სელანული ინიციალიზაცია ორჯერ შემოწმებით (Double-checked locking)
public class Singleton {
    private static volatile Singleton instance;

    private Singleton() {}

    public static Singleton getInstance() {
        if (instance == null) {
            synchronized (Singleton.class) {
                if (instance == null) {
                    instance = new Singleton();
                }
            }
        }
        return instance;
    }
}
  1. კლასის ჩატვირთვის დროს ინიციალიზაცია (eager initialization)
public class Singleton {
    private static final Singleton instance = new Singleton();

    private Singleton() {}

    public static Singleton getInstance() {
        return instance;
    }
}
  1. enum-ის გამოყენება (Java 5+ რეკომენდირებული მეთოდი)
public enum Singleton {
    INSTANCE;

    public void someMethod() {
        // ...
    }
}

ეს მეთოდი უზრუნველყოფს ნაკადების უსაფრთხოებას და სერილიზაციისგან დაცვას.

ყოველი მეთოდი აქვს თავისი უპირატესობები და ნაკლოვანებები უსაფრთხოებას, შესრულებას და განხორციელების სიმარტივესთან დაკავშირებით.