Відповідно до документації :
Component Dependencyнадає вам доступ лише до прив’язок, що піддаються методам надання через залежність від компонентів, тобто ви маєте доступ лише до тих типів, які оголошені у батьківському режимі Component.
SubComponentнадає вам доступ до всього графіку прив'язки від його батьківського під час його декларування, тобто у вас є доступ до всіх об'єктів, оголошених у його Modules.
Скажімо, у вас є , ApplicationComponentщо містить всі Androidродинне речовина ( LocationService, Resources, SharedPreferenceі т.д.). Ви також хочете мати місце, DataComponentде ви керуєте речами для наполегливості, а також WebServiceмати справу з API. Єдине, чого вам бракує, DataComponentце те, Application Contextщо проживає ApplicationComponent. Найпростіший спосіб отримати Contextвід DataComponentб залежність ApplicationComponent. Ви повинні бути впевнені, що ви Contextчітко заявили, ApplicationComponentоскільки у вас є лише доступ до заявлених матеріалів. У цьому випадку ручної роботи немає, це означає, що вам не потрібно вказувати Submodulesв батьківському режимі Componentі явно додавати свій підмодуль до батьківського модуля, наприклад:
MySubcomponent mySubcomponent = myComponent.plus(new ChildGraphModule("child!")); // No need!
Тепер розглянемо той випадок , коли ви хочете , щоб ввести WebServiceв DataComponentі LocationServiceз ApplicationComponentв ваших Fragmentякий зв'язується з допомогою @Submodule plusфункції вище. Холодна річ у тому, що компонент, до якого ви зобов’язуєтесь ( ApplicationComponent), не потрібно виставляти, WebServiceа також LocationServiceтому, що у вас є доступ до всього графіка відразу.