2014-02-08 4 views
5

Так что я провел много времени с Mortar and Flow в этот уик-энд, и я думаю, что, наконец, я работал над этим. Я обнаружил, что это немного сложнее, чем я думал изначально, главным образом потому, что я не совсем понял, что касается объекта ObjectGraph Scag, который Mortar полагается на сильно. Я читал столько, сколько мог найти на этом сайте кинжала, но я нахожу информацию на эту тему, не относящуюся конкретно к кинжалу.Кинжал и диаграмма объектов с потоком/раствором

Поэтому у меня есть несколько вопросов: 1. я вижу примеры их Scoping @ Синглтона:

@Layout(R.layout.screen_friend) 
public class FriendScreen implements Blueprint { 

    @Override public String getMortarScopeName() { 
    return getClass().getName(); 
    } 

    @Override public Object getDaggerModule() { 
    return new Module(); 
    } 

    @dagger.Module(
     injects = FriendView.class 
) 
    static class Module { 
    } 

    @Singleton 
    public static class Presenter extends ViewPresenter<TestView> { 

    @Inject 
    public Presenter() { 
     Log.d("FriendScreen", "Friend Presenter Created"); 
    } 

    @Override protected void onLoad(Bundle savedInstanceState) { 
     super.onLoad(savedInstanceState); 
    } 
    } 

Является Выступающий в этом случае область действия в этом модуле конкретно потому, что это внутренний класс? 2. Как я могу убедиться, что его экземпляр создан только в этом графике объектов, но не в глобальном графике объектов приложения? 2. Что, если Презентатор был слишком велик, и я хотел переместить его в отдельный класс? Как я могу использовать его только для этого модуля? 3. Я заметил, что некоторые из классов модулей в своих примерах являются статическими, а другие - нет. Оказывает ли это какое-либо влияние на обзор? 4. Где я могу прочитать больше, чтобы лучше понять диаграмму объектов кинжала. Мне нужно, чтобы получить лучшее понимание того, включает в себя, впрыскивает, addsTo и как те, которые используются в создании ObjectGraph и т.д.:

@dagger.Module(// 
     includes = ActionBarModule.class, 
     injects = MainView.class, 
     addsTo = ApplicationModule.class, // 
     library = true // 
) 

ответ

0
  1. Я не считаю, докладчикам области видимости модуля, так как на повороте они сохраняются. аннотация @Singleton также приводит меня к мысли, что ведущий находится на глобальном графике и просто привязывается к представлению, когда активность воссоздается.

  2. Вот хороший обзор source.

  3. Эффективная Java имеет фантастическое объяснение относительно статических внутренних и нестационарных внутренних и анонимных классов, если вы хотите узнать больше об этом.