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.