单例关闭修改开放扩展

Singleton closed for modification open to extend

我想知道如何实现: 假设我有一个单身人士 class as

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

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

var1 来自另一个 class 以某种方式扩展 Global

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

找到了一个暂时符合我目的的 hack(建议我更好的 way/alternate):

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"]