开发Swift iOS应用程序“正确的方式”

开发Swift iOS应用程序“正确的方式”,第1张

概述最近,我学习了Swift和开发iOS应用程序的基础知识。现在,我想自己开发一个真正的应用程序,但我非常关心编写好的代码,所以我已经寻找“最佳实践”,“设计模式”和“正确的方式”来实现它。 在我的搜索中,我发现这个great tutorial关于Swift iOS应用程序中通常使用的所有设计模式,以及他们使用的示例。 但是,尽管如此,我认为这个教程是一个伟大的,并帮助了我很多,但我觉得这只是一个开始 最近,我学习了Swift和开发iOS应用程序的基础知识。现在,我想自己开发一个真正的应用程序,但我非常关心编写好的代码,所以我已经寻找“最佳实践”,“设计模式”和“正确的方式”来实现它。

在我的搜索中,我发现这个great tutorial关于Swift iOS应用程序中通常使用的所有设计模式,以及他们使用的示例。

但是,尽管如此,我认为这个教程是一个伟大的,并帮助了我很多,但我觉得这只是一个开始,因为我看到很多S.O.L.I.D.违反原则例如:

参见libraryAPI中实现的外墙图案:

class libraryAPI: NSObject {    private let persistencyManager: PersistencyManager    private let httpClIEnt: httpClIEnt    private let isOnline: Bool    class var sharedInstance: libraryAPI {        struct Singleton {            static let instance = libraryAPI()        }        return Singleton.instance    }    overrIDe init() {        persistencyManager = PersistencyManager()        httpClIEnt = httpClIEnt()        isOnline = false        super.init()        NSNotificationCenter.defaultCenter().addobserver(self,selector:"downloadImage:",name: "BLDownloadImageNotification",object: nil)    }    deinit {        NSNotificationCenter.defaultCenter().removeObserver(self)    }    func getAlbums() -> [Album] {        // ... Not relevant    }    func addAlbum(album: Album,index: Int) {        // ... Not relevant    }    func deletealbum(index: Int) {        // ... Not relevant    }    func downloadImage(notification: NSNotification) {        // ... Not relevant    }}

我想到的第一件事就是:这是不是违反了方方反叛原则?不应该将httpClIEnt和persistencyManager声明为协议,然后httpClIEnt和PersistencyManager类实现该协议?

如果是这种情况,在某些时候,我将必须定义什么类,实现这些协议,我将要使用。我应该在哪里告诉应用程序?

我还有一个问题是:这个例子只实现了一个Model(Album),但是如果它会实现很多其他的呢? (专辑,作者,类型…)。 libraryAPI不会如此大,以致违反单一责任原则?

最后但并非最不重要的一点:在PersistencyManager中存在DIP的相同问题。不应该实现DAO模式,所以`PersistencyManager不依赖于其他类?

谢谢你提前,我希望我自己解释够好!

几点建议

>设计模式是帮助您节省解决已解决问题的方法的指南,它们不是严格的规则
>虽然你链接到的网站(raywenderlich.com)是一个很好的开始,为教程,更详细的看看设计模式在swift我建议Design Patterns In Swift
>如果httpClIEnt和PersistencyManager是提供接口的基类,而不是一个协议不是必需的。我同意协议是一个更通用的方法
>如果您使用协议,我会在初始化程序中指定客户端和持久性管理器,因为它们是必需的
>持久化模型是一个特定的足够角色,由单个类来处理,请参见realm.io的示例数据库

总结

以上是内存溢出为你收集整理的开发Swift iOS应用程序“正确的方式”全部内容,希望文章能够帮你解决开发Swift iOS应用程序“正确的方式”所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1052564.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-25
下一篇 2022-05-25

发表评论

登录后才能评论

评论列表(0条)

保存