【发布时间】:2017-09-14 10:52:05
【问题描述】:
我尝试实现一个Security 类和一个Secret 类。在我的整个项目中,Secret 类只能由Security.getSecretInstance().doSomeSecretAction() 调用
所以Secret.doSomeSecretAction() 应该会抛出编译错误。
我需要Security.getSecretInstance() 来进行身份验证过程。
我正在寻找一个好的模式或其他东西,但我认为我的搜索关键字太糟糕了,或者我的要求是愚蠢的/或不可能的。
目前我调用Security.getSecretInstance() 它返回Secret 的单例实例,但我也可以调用Secret.doSomeSecretAction()。没有区别。
你有什么模式、关键字或sn-ps给我吗?
编辑 我对真棒的定义是我有这样一种方法:
Security.isAuthorized { secret in
secret.doSomeSecretAction
}, failure {
print("permission denied")
}
而我只能通过这个.isAuthorized-Method 获得秘密
【问题讨论】:
-
肯定有一些方法可以(大致)实现您在此处描述的内容(
doSomeSecretAction()不应该是类方法,但除此之外它很好)。但我想明确一点:您希望这样做是为了防止开发人员在不应该的情况下意外调用.doSomeSecretAction,而不是阻止有权访问您的框架并打算提取秘密的人,对吗?前者相当简单。后者是不可能的。没有办法在 Secret 中隐藏开发人员无法提取的任何内容。这不是 Swift 的限制。它不能用任何语言完成。 -
您完全理解我的意思:是的,我希望这样做是为了防止开发人员在不应该调用
.doSomeSecretAction时意外调用。
标签: swift class security hierarchy