This 博客文章 http://blog.njoubert.com/2010/12/structuring-iphone-apps-design-principles.html朱伯特刚刚睁开了我的眼睛。我接触过很多 Java 和其他语言的设计模式。但 Objective-C 是一种相当独特的语言。
假设在一个项目中,我们与第三方 API 进行交互,例如 Dropbox 或 Facebook。到目前为止,我一直在做的是将与第三方 API 相关的所有内容合并到一个单例类中。所以我可以从视图控制器中的任何位置访问该类。我可以举个例子:[[DropboxModel sharedInstance] uploadFile:aFile]
然而,正如博客文章所指出的,这效率不高,并且会导致意大利面条式代码和糟糕的单元测试。那么设计系统使其模块化且易于使用的最佳方法是什么?
我不同意单例会导致意大利面条式代码并且效率低下的观点。然而,单元测试问题是合理的,并且单例确实减少了模块化,因为它们实际上只是花哨的全局变量。
我喜欢 Joubert 的想法,即将单例实例从应用程序委托注入到控制器中(它本身就是一个单例,咳咳)。我认为同样的方法也适合你。
在这些情况下,我可能想在单元测试中使用不同的存根对象,我通常会定义一个协议来表示 API,并使我的“真实”API 对象与它以及我的存根 API 对象一致。我在单元测试中使用存根,在应用程序中使用真实对象。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)