正面
阿立面提供了统一的,高级别接口到子系统接口。这允许更简单,更安全地访问子系统的更一般的设施。
以下是用于在 UserDefaults 中设置和检索对象的 Facade 的示例。
enum Defaults {
static func set(_ object: Any, forKey defaultName: String) {
let defaults: UserDefaults = UserDefaults.standard
defaults.set(object, forKey:defaultName)
defaults.synchronize()
}
static func object(forKey key: String) -> AnyObject! {
let defaults: UserDefaults = UserDefaults.standard
return defaults.object(forKey: key) as AnyObject!
}
}
用法可能如下所示。
Defaults.set("Beyond all recognition.", forKey:"fooBar")
Defaults.object(forKey: "fooBar")
访问共享实例和同步 UserDefaults 的复杂性对客户端是隐藏的,并且可以从程序中的任何位置访问此接口。