Sobes.tech
Junior — Middle

A Singleton minta használata sérti az egyedi felelősség elvét?

sobes.tech MI

Válasz az MI-től

A Singleton minta használata önmagában nem sérti feltétlenül az egyedi felelősség elvét (Single Responsibility Principle, SRP). Az SRP szerint egy osztálynak csak egy oka lehet a változásra, vagyis egy adott feladatért kell felelősséget vállalnia.

A Singleton egy olyan minta, amely garantálja, hogy egy osztálynak csak egy példánya legyen, és globális hozzáférési pontot biztosít hozzá. Ha a Singleton-t megvalósító osztály csak egy felelősséget lát el, akkor nem sérti az SRP-t.

Azonban gyakran a Singleton olyan osztályokra van használatban, amelyek több funkciót kezdenek ellátni, ami az SRP megsértéséhez vezet. Ezért fontos a felelősségek szétválasztása, és hogy ne terheljük túl a Singleton-t felesleges feladatokkal.

Helyes Singleton példa:

class Logger {
    static let shared = Logger()
    private init() {}

    func log(_ message: String) {
        print(message)
    }
}

Ebben a Logger csak a naplózással foglalkozik, és a Singleton a hozzáférés egyszerűsítése érdekében van használva.