命令模式来传递应用程序的活动方法?
阅读@RomainGuy的避免内存泄漏文章后,我意识到我目前的Android应用程序存在传递应用程序主要活动的错误。 所以,无论何时,我都可以简单地用Activity.getApplicationContext()替换该活动参数。
但是我的应用程序中有一些类仍然需要运行只能是应用程序主要活动成员的方法。
因此我正在考虑使用命令模式来解决这个限制。
问题是,如果我们看一下这个例子:
public class SomeCommandExecuableOnlyByActivity implements Command
{
public void execute(Object data)
{
doIt( ((MyActivity)data).getWindow() );
}
}
我再次跑到需要围绕活动传球的死胡同(这次伪装成Object
数据)。
我如何摆脱这种“鸡蛋和鸡蛋”的情况?
有没有更好的方法来解决这个问题?
我认为你在这里可能会错过的是对问题的正确分离。 如果你说你必须将主要活动传递给其他活动以调用其中的某些功能,那么在我看来,你的应用程序的体系结构有一些基本的设计缺陷。
是否在这里使用命令模式我不知道,但我通常会做的是确定那些需要共享访问的方法,将它们移动到一个单独的类,然后在所有需要此操作的活动中保留该类的单独实例功能,或者如果您需要共享实例状态,请在全局应用程序上下文中创建它并为其提供一个全局访问路径(不是理想的,但是没有像RoboGuice这样的DI框架,在Android上实现DI非常困难,因为构造函数已呈现无效。)
在我看来,在一个精心设计的Android应用程序中,一个Activity没有业务逻辑,只提供改变UI状态的操作。 用户界面或任何其他计算的流程将留给其他类。 Model-View-Presenter模式在这里有很大的帮助,使您的代码能够按照责任进行结构化。
没有给我们更多的洞察力,你很难给出具体的建议。
链接地址: http://www.djcxy.com/p/10919.html上一篇: Command pattern to pass application's activity methods?