Sobes.tech
Junior — Middle

Истифодаи намунаи Singleton вайрон кардани принсипи масъулияти ягона аст?

sobes.tech AI

Ҷавоб аз AI

Пайдоиии паттерни Singleton сам по себе не нарушает принципи единой ответственности (Single Responsibility Principle, SRP). SRP гӯяд, ки як синф бояд як сабаб барои тағирот дошта бошад, яъне барои як вазифаи мушаххас масъул бошад.

Singleton — ин паттернест, ки кафолат медиҳад, ки як синф танҳо як намуна дорад ва нуқтаи дастрасии глобалӣ ба он медиҳад. Агар синф, ки Singleton-ро амалӣ мекунад, танҳо барои як масъулият ҷавобгӯ бошад, пас SRP вайрон намешавад.

Аммо, аксар вақт Singleton барои синфҳое истифода мешавад, ки оғоз мекунанд ба иҷрои вазифаҳои зиёде, ки ин ба вайроншавии SRP оварда мерасонад. Аз ин рӯ, муҳим аст, ки масъулиятҳоро ҷудо кунем ва Singleton-ро бо вазифаҳои иловагӣ бор накунем.

Масалан, як Singleton дуруст:

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

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

Ин ҷо, Logger танҳо барои сабт кардани маълумот масъул аст, ва Singleton барои осон кардани дастрасӣ ба ягона намуна истифода мешавад.