正面

立面提供了统一的,高级别接口到子系统接口。这允许更简单,更安全地访问子系统的更一般的设施。

以下是用于在 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 的复杂性对客户端是隐藏的,并且可以从程序中的任何位置访问此接口。