gpt4 book ai didi

swift - 单例关闭修改开放扩展

转载 作者:行者123 更新时间:2023-11-30 11:48:17 25 4
gpt4 key购买 nike

我想知道如何实现这一点:假设我有一个单例类

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

我希望此类禁止修改。但开放扩展。我想达到的结果是Global.shared.var1

var1 来自另一个以某种方式扩展Global 的类时。

这是一个愿望。有可能吗?实现这一目标的正确方法是什么。

最佳答案

找到了一个暂时满足我目的的黑客(建议我更好的方法/替代方法):

class Students{
static let shared = Students()
private init(){}
var name: [String] = ["Farhan","Hasan","Saba","Fatima"]
}
class Teachers{
static let shared = Teachers()
private init(){}
var name: [String] = ["Mr. Riaz","Ms. Ayesha"]
}

//Base for Singleton, sort of proxy
class Global{
private init(){}
}

//Somewhere else in your project
extension Global{
static let students = Students.shared
}
//Somewhere else in your project
extension Global{
static let teachers = Teachers.shared
}

//Apparently it served the purpose
print(Global.students.name) //prints: ["Farhan", "Hasan", "Saba", "Fatima"]
print(Global.teachers.name) //prints: ["Mr. Riaz", "Ms. Ayesha"]

关于swift - 单例关闭修改开放扩展,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48581348/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com