Sobes.tech
Junior — Middle

Porušuje používanie vzoru Singleton princíp jednotnej zodpovednosti?

sobes.tech AI

Odpoveď od AI

Použitie vzoru Singleton samo o sebe ne porušuje princíp jednotnej zodpovednosti (Single Responsibility Principle, SRP). SRP hovorí, že trieda by mala mať len jeden dôvod na zmenu, teda byť zodpovedná za jeden konkrétny úkol.

Singleton je vzor, ktorý zabezpečuje, že trieda má len jeden inštanciu a poskytuje globálny prístupový bod k nej. Ak trieda implementujúca Singleton zodpovedá len za jednu zodpovednosť, SRP nie je porušené.

Avšak často sa Singleton používa pre triedy, ktoré začínajú vykonávať viacero funkcií, čo vedie k porušeniu SRP. Preto je dôležité rozdeľovať zodpovednosti a nepreťažovať Singleton zbytočnými povinnosťami.

Príklad správneho Singletonu:

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

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

Tu Logger je zodpovedný iba za logovanie a Singleton je použitý na uľahčenie prístupu k jedinečnému inštanciu.