关于如何管理代码的Android最佳实践 - 在Activity类或Object类中?

时间:2015-02-26 15:56:49

标签: java android eclipse oop

我是Android新手,正在开发我的第一款应用。我已经到了这样一种情况,我有两种选择,但不确定哪种方法是最佳做法,并希望有人能澄清这一点。

举个例子,我有一个Contact类。此类的对象存储在数据库中,用户可以从我的MainActivity和ContactActivity中删除该数据库。是否最好将这个 Delete()方法放在我的Activity类中,我可以使用上下文来访问数据库等?这也意味着我需要在每个方法中创建AlertDialogs以询问用户是否确定要删除(有时在其他方案中有更多功能)。或者我应该在Contact类中创建方法,这需要每次都将Context作为参数传入?

这是一个例子,我有许多类都可以提出相同的问题。

任何帮助将不胜感激,谢谢!

2 个答案:

答案 0 :(得分:1)

每当您开发移动项目时,您需要将业务逻辑与UI逻辑分开,对于您的模型也是如此。

这样做是为了让您的移动应用程序能够长期保持可持续性,因为当您合并错误修复程序或新功能时,如果您在一个类中有太多代码,那么找到它的方式就会完全混乱

有了这一套,我将向您推荐一个可能对您有所帮助的移动应用程序:

  • 用户界面:专注于包装以保存您的所有活动,您可以将您的碎片放在一个单独的活动中。保持代码免费或与数据库访问或修改模型类相关的任何内容。您希望您的UI类没有任何与处理事件无关的代码,呈现UI更改(如更改文本,样式,图像,加载片段等)。如果您需要超出此范围的内容,请使用我即将描述的其他图层中的对象。

  • 数据访问对象:与从文件读取,访问内部数据库,在任一个中存储信息相关的任何内容都应该放在不同的包中,这些类应该处理与这些存储位置的任何连接并返回信息由您的UI或其他图层使用。

  • 数据传输对象:保留代表您在UI上呈现的信息的类没有任何复杂的逻辑,这些类只需要POJO来保存将在其上提供的信息。用户界面或通过网络发送。

  • 网络:如果您必须使用Web服务或连接到远程服务器以检索任何类型的数据,则应在此处放置类。

  • 业务:需要使用数据访问对象从数据库中检索人员列表,但是需要按某些规则过滤或处理图像处理或某些复杂操作?像这样的课程应放在这里。

  • 服务:您的服务或任务也应放在自己的包中,避免在活动中声明它们。

如果您的应用程序需要更多功能并且您认为其中某些层不适合您,则应添加更多或删除您未赢得的功能,最终目标是保持您的项目代码易于阅读和维护。

有些人可能认为将代码分成几类是一件麻烦事,但拥有处理所有内容的怪物类会对你造成更大的伤害。

当然,你不应该把所有东西都变成一个类,你可以将类似的逻辑分组为泛型类型方法,如果你只有一个方法的接口,就可以使用匿名类。

最终目标是让您的开发时间和维护时间不那么麻烦。

答案 1 :(得分:0)

当多个类应该执行相同的代码,并且代码 与其使用相关时,您应该创建一个superclass并使用这两个类继承它。

如果多个类应执行相同的代码,并且代码 与其使用相关(完全不同的任务),则应使用DAO / Singleton