[Swift设计模式] 门面

472 阅读2分钟
更多内容欢迎关注公众号:Swift花园

门面设计模式指的是在复杂子系统上提供简单接口的模式。

什么是门面?

门面设计模式的命名来自真实世界的建筑结构。

一栋建筑的一个外面,通常是前面。

在软件开发领域,这个定义可以翻译成这样:某个事物的外在,用以隐藏所有的内部细节。因此,门面的主要目的是提供漂亮的API。😅

通常来说,在你拥有两个或者更多的独立子系统,并且需要子系统之间协作以完成某些任务时,门面设计模式会派上用场。它隐藏系统内部的复杂性,包括方法内部的变化,而保持外部的接口不变。👍

现实世界的门面模式

我们来个简单的demo吧。想象一个应用程序,有一个开关按钮,可以打开或者关闭特定的设置。当用户点击它时,改变存储中这个设置对应的值,同时我们还要播放一个声音作为输入的反馈。最后,开关要改变状态。加起来一共是三件事。🎶

func toggleSettings() {
    // 改变设置的值
    let settingsKey = "my-settings"

    let originalValue = UserDefaults.standard.bool(forKey: settingsKey)
    let newValue = !originalValue

    UserDefaults.standard.set(newValue, forKey: settingsKey)
    UserDefaults.standard.synchronize()

    // 反馈的音效
    AudioServicesPlaySystemSound(1054);

    // 更新按钮的UI
    self.switchButton.setOn(newValue, animated: true)
}

恭喜你,我们刚才创造了一个最简单的门面。如果上面的代码对你来很熟悉,那意味着你过去已经在熟练地使用门面了。

当然,一些事情可能更复杂。举个例子,如果你有一个web服务,你需要上传一些数据和附件。你也可以写一个门面隐藏掉子系统底层的复杂性。

创建门面十分容易,很多时候你甚至意识不到你正在使用门面,但它们对于隐藏、解耦事物非常有用。😉

我的公众号
这里有Swift及计算机编程的相关文章,以及优秀国外文章翻译,欢迎关注~