你是对的.从长远来看,使用注射只会对您有所帮助.您可以花5分钟设置模块/组件,也可以只编码.
只要您没有进行适当的测试,如果您的演示者看起来如下,则没有太大的区别
mPresenter = new Presenter();
Run Code Online (Sandbox Code Playgroud)
假设您正确使用构造函数注入,在创建组件后,与之相比,您可以保存一些行
@Inject Presenter mPresenter;
// onCreate or some other place
{
getComponent().inject(this); /* getComponent() also 4-5 lines */
}
Run Code Online (Sandbox Code Playgroud)
再次.如果使用正确的构造函数注入,很可能没有很多模块代码.只需创建一些组件即可.
但是你节省了一些时间,一旦你想进行测试,这只是一些简单的重构,可以很快完成.
这假设您的演示者没有依赖其他对象.但如果它呢?
SharedPreferences preferences = getPreferences();
MyStorage storage = new MyStorage(preferences);
mPresenter = new Presenter(storage);
Run Code Online (Sandbox Code Playgroud)
使用某些东西存储数据是一个很好的用例.虽然您刚刚在活动中添加了一些关于对象创建的逻辑,但是匕首实现看起来仍然相同.
现在让我们假设你想storage在活动之间从上面分享这个.现在,您必须为您Application或其他一些地方添加一些逻辑,您可以在其中创建一个Singleton以在整个应用中使用.
这可能不是你唯一的单身人士,你也会开始混乱Application.不要让我开始管理这些对象的生命周期,例如用户登录或注销,确保清除缓存的数据!
再次.匕首的实现看起来仍然相同.如果需要更多逻辑,则可以很好地放置在模块中,并使用组件依赖性进行抽象.
一旦你开始思考我可以创建处理对象构造和注入的类,你知道你可能刚刚使用了匕首;)
我还写了一篇关于匕首基础知识的博客文章,包括构造函数注入是如何工作的,许多初学者因某种原因没有正确使用它.
| 归档时间: |
|
| 查看次数: |
991 次 |
| 最近记录: |