正如您可以想象的那样,在创建Swift应用程序时,代码可重用性是我们的首要任务之一。为了尽可能多地重用代码,我们通过利用与Swift兼容的各种设计模式,尽可能地集中模块化代码库。在这个Swift教程中,我们将看一下Facade Design Pattern。让我们理解它是什么,它采用什么样的架构方法,让我们看一下在Swift中实现它的代码片段。
Facade模式(也拼写为façade)是面向对象编程中常用的软件设计模式。类似于架构中的外观,外观是一个对象,用作面向更复杂的底层或结构代码的前向界面。您可以在*上阅读官方通用Facade定义。
让我们考虑一个具体的例子,对所有iOS开发者来说都很熟悉。在开发移动应用程序时,几乎每次我们使用URL通信从远程服务器加载/存储资源。在我们的示例中,最常见的方案是Firebase实例或WooCommerce / WordPress后端。
如果您曾创建过一个简单的APIClient / APIManager类,那么您已经使用了Facade Design Pattern。创建一个封装网络的简单APIClient / APIManager对象,确实是Alamofire或URLSession功能的外观。通过这种方式,您可以创建一个Facade,它具有简单而方便的API,可用于相当复杂的URL请求相关逻辑。
门面设计模式示例
如果您曾经使用过KeyChain,那么您就知道Apple的API非常繁琐。事实上,几乎没有人使用这些API。我们所知道的大多数iOS开发人员通常使用第三方开源Swift项目来包装KeyChain的逻辑,隐藏所有这些可怕的接口。这些Swift库本身就是外观。
对于一个简单的外观示例,让我们为Keychain中的存储值构建一个简单的外观对象:
class KeychainFacade { func save(value:String,forKey key:String)throws { //保存到Keychain逻辑 } func readValue(forKey key:String) - > throws String { //从Keychain逻辑中读取值 } }
正如您所看到的,我们还没有添加实现,因为这篇文章与Keychain无关,但您应该明白这一点。
结论
立面设计模式在业界广泛传播,很有可能你已经习惯了,没有意识到这一点。它用于隐藏实现细节和抽象接口,以便消费者可以处理较低级别的细节。虽然它增加了额外的抽象层,但外观设计模式显着提高了代码的可读性和体系结构。
如果你喜欢这篇文章,请考虑分享它以帮助我们传播这个词。快乐的编码!