我想提出的一个目标AppDelegate
,并用它在我的计划,我已经宣布所有的getter和setter方法,还插入,选择,删除,在其更新的数据库查询。
我想问的是它是一个很好的做法,这样做,如果是的话,那么如何,如果没有,那么为什么它不是一个好的做法呢?
我希望我的问题是清楚的,请询问有关问题,如果您有任何。
我想提出的一个目标AppDelegate
,并用它在我的计划,我已经宣布所有的getter和setter方法,还插入,选择,删除,在其更新的数据库查询。
我想问的是它是一个很好的做法,这样做,如果是的话,那么如何,如果没有,那么为什么它不是一个好的做法呢?
我希望我的问题是清楚的,请询问有关问题,如果您有任何。
这不是把你的AppDelegate到包含上百万的方法和属性“泥浆的大球”(尽管它可能是很有诱惑力)一个很好的策略。
更好,更面向对象的方法来关闭部分功能位到精心设计的对象 - 例如,你可能有一个类的DatabaseManager它处理所有的数据库交互。 那么你可能这就需要将DatabaseManager要求应用程序代理实例到的DatabaseManager参考您的应用程序的位。
另外,您也可以通过围绕一个参考DatabaseManager,以需要它的应用程序的部分。 然而,这最后一种方法不会导致更多的“接口污染”,在这里你必须修改很多地方的接口,以便于将DatabaseManager通过。
而另一种替代方案是有效地使你的DatabaseManager本身是一个“单身” - 因此它的一个实例是,通过设置类的类方法来访问。 以这种方式工作的单身人士往往令人难以接受的,而且通常有很好的理由(使测试更加努力,诸如此类的事情)。 我倾向于避免对象有自己的“单身”的性质是置于对象 - 我喜欢,如果我需要那种事,有机会获得的已知点(一种“工厂”,如果你喜欢),您可以去获得一个共享实例。
我认为最好的办法是建立一个全球性的单例类,而不是在处理的appDelegate。
声明所有你getter和setter方法存在并使用单独的对象处理所有在你的项目。 请参阅此链接如何创建单例类
对于数据库,创建一个DataAccessLayerClass。 只要你想执行任何查询访问这个类。 这个类中的方法应该有输入,您的数据和将创建查询,将执行查询并返回数据。
它的所有有关的复杂性和你的感情。 你一定很喜欢你的解决方案;-)
我显然这样做是另一种方式 - 我有单,它不处理我所有的公共数据库的东西。 我试图保持应用程序委托尽可能简单。 这对代码共享等更好