【问题标题】:MVP: how to write to log from PresenterMVP:如何从 Presenter 写入日志
【发布时间】:2016-04-23 14:29:42
【问题描述】:

我使用Mosby 来构建具有 MVP 模式的应用程序。这是规则之一:

不要在 Presenter 中使用 android 库代码。

但是如果我想从 Presenter 记录一些东西怎么办?我看到的唯一方法是使用System.out.println();,但这听起来不太好。有什么想法吗?

【问题讨论】:

    标签: android mvp mosby


    【解决方案1】:

    不在 Presenter 中使用 Android 库代码的原因是,当您编写单元测试时,您的类中的 Android 代码没有依赖关系,因此可以直接在 JVM 上运行。

    如果您发现自己需要使用 Android 代码,那么我这样做的方法是将其隐藏在界面后面。这样您就可以在生产代码中使用一种实现,在测试中使用另一种实现。

    所以创建一个名为 Logger 的接口:

    public interface Logger {
    
        void logd(String tag, String message);
    }
    

    然后你可以使用你的生产代码:

    public class LoggerImpl implements Logger {
    
        public void logd(String tag, String message) {
    
            Log.d(tag, message);
        }
    }
    

    但是当您运行测试时,您可以使用其他实现:

    public class LoggerTestImpl implements Logger {
    
        public void logd(String tag, String message) {
    
            System.out.println(tag + " " + message);
        }
    }
    

    向 Presenter 的构造函数添加 Logger 依赖项。在运行时给它一个 LoggerImpl,在测试期间给它一个 LoggerTestImpl。

    顺便说一句,您可以首先考虑是否真的需要从您的 Presenter 进行大量日志记录。 Android Studio 允许您设置不暂停代码的断点,并在遇到中断时将消息记录到调试控制台。当然,这取决于您的要求。

    【讨论】:

    • 如果您包含使用 Android.util.Log 方法的第三方库/外部代码怎么办?
    猜你喜欢
    • 2014-07-15
    • 1970-01-01
    • 1970-01-01
    • 2010-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-09
    相关资源
    最近更新 更多