7:介绍Dog Patch¶
你已经学会了TDD
的基础知识,你应该开始对它感到舒适。然而,你还没有学会如何为大多数应用程序的一个非常关键的部分做TDD
:网络!
在接下来的几章里,你将学习以测试驱动的方式编写网络代码的来龙去脉。本章的目的是向你介绍本节的示例项目,并强调还有哪些工作需要完成。
开始¶
在本节中,您将完成一个名为Dog Patch
的小狗领养应用程序。这个应用程序将爱狗人士与善良、专业的饲养员联系起来,以寻找他们梦想中的小狗。
让我们来看看为实现这一目标需要做什么。
网络客户端¶
在第8章,你将学习如何为RESTful
网络启动TDD
。你将首先探索启动项目,发现ListingsViewController
总是显示错误:
这是因为应用程序实际上还没有进行任何联网!你将创建一个联网客户端,并发出GET
请求,从远程服务器获取狗的模型,作为解决这个问题的第一步。你将创建一个网络客户端并发出GET
请求,从远程服务器上获取Dog
模型,作为解决这个问题的第一步。
使用网络客户端¶
在第9章中,你将遵循TDD
,在视图控制器中使用你的网络客户端。最终,你的应用程序将能够向用户显示联网结果,除了图像:
具体来说,你将更新ListingsViewController
以使用DogPatchClient
,即你在上一章创建的网络客户端。
图像客户端¶
在第10章中,你将创建一个图像客户端,并更新ListingsViewController
以使用它来显示图像:
了解Dog Patch的架构¶
你将使用Model-View-Controller-Networking(MVC-N)
作为这个应用程序的架构。如果你以前在iOS
中做过任何工作,你很可能熟悉模型-视图-控制器(MVC)
架构,其中你把对象分成三种类型。当然,这些都被恰当地命名为模型、视图和控制器。
MVC-N
是MVC
的一个衍生架构。然而,它不是只有三种类型,而是分离出第四种类型用于联网。
特别是对于像Dog Patch
这样的网络重度应用,将网络分离到自己的类型中是有意义的。如果你不这样做,网络代码毕竟会去哪里呢?在纯粹的MVC
架构的应用程序中,开发者倾向于将网络归入每个视图控制器。
这里的问题是,很多网络代码都是相互关联的。例如,URL
和内容序列化、认证头等都需要完全相同的逻辑。如果网络代码直接在每个视图控制器中,你很快就会出现大量的重复。这很快就会变成一个无法管理的混乱局面。
幸运的是,MVC-N
允许你完全避免这个问题,把你的网络代码放到一个网络客户端中。然后,这个客户端被传递到任何需要它的视图控制器中,这就有效地消除了视图控制器之间的重复。
如果你以前没有听说过MVC-N
,那也没有关系。在接下来的几章中,你会了解到所有关于它的知识!
从这里开始,该往哪里走?¶
本章介绍了Dog Patch
和你在接下来的几章中要做的事情。继续看下一章,深入学习代码!