рдПрдВрдбреНрд░реЙрдЗрдб рдорд▓реНрдЯреА-рдореЙрдбреНрдпреВрд▓ рдЖрд░реНрдХрд┐рдЯреЗрдХреНрдЪрд░ред рдП рдЯреВ рдЬреЗрдб

рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░!

рдмрд╣реБрдд рдкрд╣рд▓реЗ рдирд╣реАрдВ, рд╣рдордиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдПрдХ рдореЛрдмрд╛рдЗрд▓ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗрд╡рд▓ рдПрдХ рдкрддрд▓рд╛ рдЧреНрд░рд╛рд╣рдХ рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдмрд╣реБрдд рд╣реА рдЕрд▓рдЧ рддрд░реНрдХ рдХреА рдПрдХ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╕реБрд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╣рдо рд╕реНрд╡рдЪреНрдЫ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рд╕реЗ рдкреНрд░реЗрд░рд┐рдд рдереЗ, рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ DI рдХреНрдпрд╛ рд╣реИ, рдбреИрдЧрд░ 2 рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╕реАрдЦреЗрдВ, рдФрд░ рдЕрдм рд╣рдорд╛рд░реА рдЖрдВрдЦреЗрдВ рдмрдВрдж рд╣реЛрдиреЗ рд╕реЗ рд╣рдо рдХрд┐рд╕реА рднреА рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдкрд░рддреЛрдВ рдореЗрдВ рддреЛрдбрд╝рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИрдВред

рд▓реЗрдХрд┐рди рджреБрдирд┐рдпрд╛ рдЕрднреА рднреА рдЦрдбрд╝реА рдирд╣реАрдВ рд╣реИ, рдФрд░ рдкреБрд░рд╛рдиреА рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рд╕рд╛рде рдирдП рд▓реЛрдЧ рдЖрддреЗ рд╣реИрдВред рдФрд░ рдЗрд╕ рдирдИ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рдирд╛рдо рд╣реИ рдореЛрдиреЛрдореЙрдбреНрдпреВрд▓рд░рд┐рдЯреАред рдЖрдк рдЖрдорддреМрд░ рдкрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд▓рдЧрд╛рддреЗ рд╣реИрдВ рдЬрдм рд╡рд┐рдзрд╛рдирд╕рднрд╛ рдХрд╛ рд╕рдордп рдЕрдВрддрд░рд┐рдХреНрд╖ рдореЗрдВ рдЙрдбрд╝рддрд╛ рд╣реИред рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рдорд▓реНрдЯреАрдореЙрдбреНрдпреВрд▓рд░рд┐рдЯреА ( рдПрдХ , рджреЛ ) рдХреЗ рд▓рд┐рдП рд╕рдВрдХреНрд░рдордг рдкрд░ рдХрдИ рд░рд┐рдкреЛрд░реНрдЯ рд╢реБрд░реВ рд╣реЛрддреА рд╣реИрдВред
рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ, рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд╣рд░ рдХреЛрдИ рдпрд╣ рднреВрд▓ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдореЛрдиреЛрдореЙрдбреНрдпреВрд▓рд░рд┐рдЯреА рди рдХреЗрд╡рд▓ рд╡рд┐рдзрд╛рдирд╕рднрд╛ рд╕рдордп рдХреЛ рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИ, рдмрд▓реНрдХрд┐ рдЖрдкрдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рднреА рдкреНрд░рднрд╛рд╡рд┐рдд рдХрд░рддреА рд╣реИред рдпрд╣рд╛рдБ рд╕рд╡рд╛рд▓реЛрдВ рдХрд╛ рдЬрд╡рд╛рдмред рдЖрдкрдХрд╛ AppComponent рдХрд┐рддрдирд╛ рдмрдбрд╝рд╛ рд╣реИ? рдХреНрдпрд╛ рдЖрдк рд╕рдордп-рд╕рдордп рдкрд░ рдЙрд╕ рдХреЛрдб рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ рдЬреЛ A рдореЗрдВ рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдлреАрдЪрд░ B рдХреА рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдХреЛ рдЦреАрдВрдЪрддрд╛ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рдРрд╕рд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдареАрдХ рд╣реИ, рдпрд╛ рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЕрдзрд┐рдХ рд╢реАрд░реНрд╖-рд╕реНрддрд░ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП? рдХреНрдпрд╛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдореЗрдВ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдиреБрдмрдВрдз рд╣реИ? рдФрд░ рдЖрдк рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдХреЛ рдХреИрд╕реЗ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд░рддреЗ рд╣реИрдВ? рдХреНрдпрд╛ рдХреЛрдИ рдирд┐рдпрдо рд╣реИрдВ?
рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдордиреЗ рдкрд░рддреЛрдВ рдХреЗ рд╕рд╛рде рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд┐рдпрд╛ рд╣реИ, рдЕрд░реНрдерд╛рддреН, рдКрд░реНрдзреНрд╡рд╛рдзрд░ рд░реВрдк рд╕реЗ рд╕рдм рдХреБрдЫ рдареАрдХ рд▓рдЧ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХреНрд╖реИрддрд┐рдЬ рд░реВрдк рд╕реЗ рдХреБрдЫ рдЧрд▓рдд рд╣реЛ рд░рд╣рд╛ рд╣реИ? рдФрд░ рд╕рд┐рд░реНрдл рдкреИрдХреЗрдЯ рдХреЛ рддреЛрдбрд╝рдирд╛ рдФрд░ рд╕рдореАрдХреНрд╖рд╛ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рд╕реЗ рд╕рдорд╕реНрдпрд╛ рд╣рд▓ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред

рдФрд░ рдЕрдзрд┐рдХ рдЕрдиреБрднрд╡реА рдХреЗ рд▓рд┐рдП рд╕реБрд░рдХреНрд╖рд╛ рдкреНрд░рд╢реНрдиред рдЬрдм рдЖрдк рдорд▓реНрдЯреА-рдореЛрдбреНрдпреВрд▓рд░рд┐рдЯреА рдореЗрдВ рдЪрд▓реЗ рдЧрдП, рддреЛ рдХреНрдпрд╛ рдЖрдкрдХреЛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХрд╛ рдЖрдзрд╛ рднрд╛рдЧ рднреА рдЦрд╛рд▓реА рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рд╣рдореЗрд╢рд╛ рдХреЛрдб рдХреЛ рдПрдХ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рджреВрд╕рд░реЗ рдореЗрдВ рдЦреАрдВрдЪреЗрдВ рдФрд░ рдПрдХ рдЧреИрд░-рдЗрдХрдЯреНрдареЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреЗ рд╕рд╛рде рд╕рдордп рдХреА рдПрдХ рдЕрдЪреНрдЫреА рдЕрд╡рдзрд┐ рдореЗрдВ рд░рд╣реЗрдВ?

рдЕрдкрдиреЗ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЖрдкрдХреЛ рдпрд╣ рдмрддрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдореИрдВ рдПрдХ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреА рджреГрд╖реНрдЯрд┐ рд╕реЗ рдмрд┐рд▓реНрдХреБрд▓ рдмрд╣реБрд╡рд┐рдзрддрд╛ рдХреИрд╕реЗ рдЖрдпрд╛ред рдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдиреЗ рдореБрдЭреЗ рдкрд░реЗрд╢рд╛рди рдХрд┐рдпрд╛, рдФрд░ рдореИрдВрдиреЗ рдЙрдиреНрд╣реЗрдВ рдЪрд░рдгреЛрдВ рдореЗрдВ рд╣рд▓ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХреИрд╕реЗ рдХрд┐рдпрд╛ред рдФрд░ рдЕрдВрдд рдореЗрдВ, рдЖрдк рдЖрдВрд╕реВ рдФрд░ рджрд░реНрдж рдХреЗ рдмрд┐рдирд╛ рдореЛрдиреЛрдореЛрдбреНрдпреБрд▓рд░рд┐рдЯреА рд╕реЗ рдорд▓реНрдЯреАрдореЙрдбреНрдпреВрд▓рд░рд┐рдЯреА рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдкрд╛рдПрдВрдЧреЗред

рдкрд╣рд▓реЗ рд╕рд╡рд╛рд▓ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрддреЗ рд╣реБрдП, AppComponent рдХрд┐рддрдирд╛ рдмрдбрд╝рд╛ рд╣реИ, рдореИрдВ рдХрдмреВрд▓ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ - рдмрдбрд╝рд╛, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрдбрд╝рд╛ред рдФрд░ рдЗрд╕рдиреЗ рдореБрдЭреЗ рд▓рдЧрд╛рддрд╛рд░ рд╕рддрд╛рдпрд╛ред рдпрд╣ рдХреИрд╕реЗ рд╣реБрдЖ? рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдпрд╣ рдЗрд╕ рддрд░рд╣ рдХреЗ рдбрд┐ рд╕рдВрдЧрдарди рдХреЗ рдХрд╛рд░рдг рд╣реИред рдпрд╣ рдбреАрдЖрдИ рдХреЗ рд╕рд╛рде рд╣реИ рдХрд┐ рд╣рдо рд╢реБрд░реВ рдХрд░реЗрдВрдЧреЗред

рдЬреИрд╕реЗ рдореИрдВрдиреЗ рдкрд╣рд▓реЗ DI рдХрд┐рдпрд╛ рдерд╛


рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХрдИ рд▓реЛрдЧреЛрдВ рдиреЗ рдЕрдкрдиреЗ рд╕рд┐рд░ рдореЗрдВ рдХреБрдЫ рдРрд╕рд╛ рдмрдирд╛рдпрд╛ рд╣реИ рдЬреЛ рдШрдЯрдХреЛрдВ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рдЗрд╕реА рд╕реНрдХреИрдкреНрд╕ рдХреЗ рдЗрд╕ рдЖрд░реЗрдЦ рдХреЗ рд╕рдорд╛рди рд╣реИ:


рд╣рдорд╛рд░реЗ рдпрд╣рд╛рдБ рдХреНрдпрд╛ рд╣реИ?


AppComponent , рдЬрд┐рд╕рдиреЗ рд╕рд┐рдВрдЧрд▓рдЯрди рд╕реНрдХреЛрдк рдХреЗ рд╕рд╛рде рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЕрд╡рд╢реЛрд╖рд┐рдд рдХрд┐рдпрд╛ред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд▓рдЧрднрдЧ рд╕рднреА рдХреЗ рдкрд╛рд╕ рдпрд╣ рдШрдЯрдХ рд╣реИред

рдлрд╝реАрдЪрд░рдХрдВрдкреНрдпреВрдЯрд░ ред рдкреНрд░рддреНрдпреЗрдХ рд╕реБрд╡рд┐рдзрд╛ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рджрд╛рдпрд░реЗ рдХреЗ рд╕рд╛рде рдереА рдФрд░ AppComponent рдпрд╛ рдПрдХ рд╡рд░рд┐рд╖реНрда рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдПрдХ рдЙрдкрд╕рдореБрдЪреНрдЪрдп рдерд╛ред
рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдкрд░ рдереЛрдбрд╝рд╛ рдзреНрдпрд╛рди рджреЗрдВред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреНрдпрд╛ рд╣реИ? рдореИрдВ рдЕрдкрдиреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рдкреВрд░реНрдг, рдЕрдзрд┐рдХрддрдо рд╕реНрд╡рддрдВрддреНрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЙрдбреНрдпреВрд▓ рд╣реИ рдЬреЛ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рд╣реИ, рдФрд░ рдЬреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЗрдВ рдлрд┐рд░ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЖрд╕рд╛рди рд╣реИред рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдмрдбрд╝реА рдФрд░ рдЫреЛрдЯреА рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдореЗрдВ рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред рдФрд░ рд╡реЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╛ рдЪрд▓рд╛ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рд╣рдо рдЕрдкрдирд╛ рдПрдкреНрд▓рд┐рдХреЗрд╢рди (Android рдХреЗ рд▓рд┐рдП Kaspersky Internet Security) рд▓реЗрддреЗ рд╣реИрдВ, рддреЛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдПрдВрдЯреА-рд╡рд╛рдпрд░рд╕, рдПрдВрдЯреА-рдереЗрдлреНрдЯ рдЖрджрд┐ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╕реНрдХреНрд░реАрдирдХрдВрдкреНрдпреВрдЯрд░ ред рдПрдХ рд╡рд┐рд╢реЗрд╖ рд╕реНрдХреНрд░реАрди рдХреЗ рд▓рд┐рдП рдПрдХ рдШрдЯрдХ, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рджрд╛рдпрд░реЗ рдХреЗ рд╕рд╛рде рднреА рдФрд░ рдЗрд╕реА рд╕реБрд╡рд┐рдзрд╛ рдШрдЯрдХ рдХрд╛ рдПрдХ рдЙрдкрд╕рдореБрдЪреНрдЪрдп рднреА рд╣реИред

рдЕрдм "рдРрд╕рд╛ рдХреНрдпреЛрдВ" рдХреА рдПрдХ рд╕реВрдЪреА


рдХреНрдпреЛрдВ рд╕рдм-рдкрд╛рд░реНрдЯрдирд░?
рдШрдЯрдХ рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ, рдореБрдЭреЗ рдпрд╣ рддрдереНрдп рдкрд╕рдВрдж рдирд╣реАрдВ рдЖрдпрд╛ рдХрд┐ рдПрдХ рдШрдЯрдХ рдПрдХ рдмрд╛рд░ рдореЗрдВ рдХрдИ рдШрдЯрдХреЛрдВ рдкрд░ рдирд┐рд░реНрднрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рдерд╛, рдЕрдВрддрддрдГ рдШрдЯрдХреЛрдВ рдФрд░ рдЙрдирдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдХрд╛рд░рдг рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЬрдм рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╕рдЦреНрдд-рд╕реЗ-рдХрдИ рд╕рдВрдмрдВрдз (рдПрдХ рдШрдЯрдХ рдФрд░ рдЙрд╕рдХреЗ рдЕрдзреАрдирд╕реНрде) рд╣реЛрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЕрдзрд┐рдХ рд╕реБрд░рдХреНрд╖рд┐рдд рдФрд░ рдЕрдзрд┐рдХ рд╕реНрдкрд╖реНрдЯ рд╣реЛрддрд╛ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, рдорд╛рддрд╛-рдкрд┐рддрд╛ рдХреА рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдПрдБ рдЙрдкрд╕рдореБрджрд╛рдп рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛрддреА рд╣реИрдВ, рдЬреЛ рдХрд┐ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рднреА рд╣реИред

рд╣рд░ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЧреБрдВрдЬрд╛рдЗрд╢ рдХреНрдпреЛрдВ рд╣реИ?
рдХреНрдпреЛрдВрдХрд┐ рддрдм рдореИрдВ рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рд╕реЗ рдЖрдЧреЗ рдмрдврд╝рд╛ рдХрд┐ рдкреНрд░рддреНрдпреЗрдХ рд╕реБрд╡рд┐рдзрд╛ рдХрд┐рд╕реА рди рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рдЕрдкрдирд╛ рдЬреАрд╡рди рдЪрдХреНрд░ рд╣реИ, рдЬреЛ рджреВрд╕рд░реЛрдВ рдХреЗ рд╕рдорд╛рди рдирд╣реАрдВ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рджрд╛рдпрд░рд╛ рдмрдирд╛рдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИред рдХрдИ рдХрдВрдЬреВрд╕ рдЪреАрдЬреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рдмрд┐рдВрджреБ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдореИрдВ рдиреАрдЪреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд░реВрдВрдЧрд╛ред

рдЪреВрдВрдХрд┐ рд╣рдо рд╕реНрд╡рдЪреНрдЫ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рдбреИрдЧрд░ 2 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдореИрдВ рдЙрд╕ рдХреНрд╖рдг рдХрд╛ рднреА рдЙрд▓реНрд▓реЗрдЦ рдХрд░реВрдВрдЧрд╛ рдХрд┐ рдирд┐рд░реНрднрд░рддрд╛ рдХреИрд╕реЗ рд╡рд┐рддрд░рд┐рдд рдХреА рдЧрдИ рдереАред рдкреНрд░рд╕реНрддреБрддрдХрд░реНрддрд╛, рд╕рд╣рднрд╛рдЧрд┐рддрд╛рдХрд░реНрддрд╛, рд░рд┐рдкреЙрдЬрд┐рдЯрд░реА рдФрд░ рдЖрд╢реНрд░рд┐рддреЛрдВ рдХреЗ рдЕрдиреНрдп рд╕рд╣рд╛рдпрдХ рд╡рд░реНрдЧреЛрдВ рдХреЛ рдирд┐рд░реНрдорд╛рдгрдХрд░реНрддрд╛ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдкреВрд░реНрддрд┐ рдХреА рдЧрдИ рдереАред рдкрд░реАрдХреНрд╖рдгреЛрдВ рдореЗрдВ, рд╣рдо рддрдм рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реНрдЯрдмреНрд╕ рдпрд╛ рдореЛрдХреА рдХрд╛ рд╡рд┐рдХрд▓реНрдк рджреЗрддреЗ рд╣реИрдВ рдФрд░ рдЪреБрдкрдЪрд╛рдк рд╣рдорд╛рд░реА рдХрдХреНрд╖рд╛ рдХрд╛ рдкрд░реАрдХреНрд╖рдг рдХрд░рддреЗ рд╣реИрдВред
рдирд┐рд░реНрднрд░рддрд╛ рдЧреНрд░рд╛рдл рдХрд╛ рдмрдВрдж рд╣реЛрдирд╛ рдЖрдорддреМрд░ рдкрд░ рдЧрддрд┐рд╡рд┐рдзрд┐, рдЯреБрдХрдбрд╝реЗ, рдХрднреА-рдХрднреА рд░рд┐рд╕реАрд╡рд░ рдФрд░ рд╕реЗрд╡рд╛рдУрдВ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ, рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ, рдЙрди рд░реВрдЯ рд╕реНрдерд╛рдиреЛрдВ рд╕реЗ рдЬрд╣рд╛рдВ рд╕реЗ рдПрдВрдбреНрд░реЙрдЗрдб рдХреБрдЫ рд╢реБрд░реВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдХреНрд▓рд╛рд╕рд┐рдХ рд╕реНрдерд┐рддрд┐ рддрдм рд╣реЛрддреА рд╣реИ рдЬрдм рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЧрддрд┐рд╡рд┐рдзрд┐ рдмрдирд╛рдИ рдЬрд╛рддреА рд╣реИ, рд╕реБрд╡рд┐рдзрд╛ рдШрдЯрдХ рд╢реБрд░реВ рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдЧрддрд┐рд╡рд┐рдзрд┐ рдореЗрдВ рд░рд╣рддрд╛ рд╣реИ, рдФрд░ рд╕реБрд╡рд┐рдзрд╛ рдореЗрдВ рд╣реА рддреАрди рд╕реНрдХреНрд░реАрди рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рддреАрди рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рд▓рд╛рдЧреВ рд╣реЛрддреЗ рд╣реИрдВред

рддреЛ, рд╕рдм рдХреБрдЫ рддрд░реНрдХрд╕рдВрдЧрдд рд▓рдЧрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╣рдореЗрд╢рд╛ рдХреА рддрд░рд╣, рдЬреАрд╡рди рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕рдорд╛рдпреЛрдЬрди рдХрд░рддрд╛ рд╣реИред

рдЬреАрд╡рди рдХреА рд╕рдорд╕реНрдпрд╛рдПрдВ


рдЙрджрд╛рд╣рд░рдг рдХрд╛рд░реНрдп


рдЖрдЗрдП рд╣рдорд╛рд░реЗ рдЖрд╡реЗрджрди рд╕реЗ рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рд╕реНрдХреИрдирд░ рд╕реБрд╡рд┐рдзрд╛ рдФрд░ рдПрдХ рдПрдВрдЯреАрдереЗрдлрд╝реНрдЯ рд╕реБрд╡рд┐рдзрд╛ рд╣реИред рджреЛрдиреЛрдВ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдореЗрдВ рдПрдХ рдХрд╝реАрдорддреА рдЦрд░реАрджреЗрдВ рдмрдЯрди рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, "рдЦрд░реАрджрдирд╛" рдХреЗрд╡рд▓ рдПрдХ рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рднреЗрдЬ рд░рд╣рд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЦрд░реАрдж рдкреНрд░рдХреНрд░рд┐рдпрд╛ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рдмрд╣реБрдд рд╕рд╛рд░реЗ рддрд░реНрдХ рднреА рд╣реИрдВред рдпрд╣ рддрддреНрдХрд╛рд▓ рдЦрд░реАрдж рдХреЗ рд▓рд┐рдП рдХреБрдЫ рд╕рдВрд╡рд╛рджреЛрдВ рдХреЗ рд╕рд╛рде рд╡рд┐рд╢реБрджреНрдз рд░реВрдк рд╕реЗ рд╡реНрдпрд╛рдкрд╛рд░рд┐рдХ рддрд░реНрдХ рд╣реИред рдпрд╣реА рд╣реИ, рдЦреБрдж рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ - рдЦрд░реАрджред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рджреЛ рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдореЗрдВ рд╣рдореЗрдВ рддреАрд╕рд░реА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
Ui рдФрд░ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрди рдЪрд┐рддреНрд░ рд╣реИред рдореБрдЦреНрдп рд╕реНрдХреНрд░реАрди рд╢реБрд░реВ рд╣реЛрддреА рд╣реИ, рдЬрд┐рд╕ рдкрд░ рджреЛ рдмрдЯрди:


рдЗрди рдмрдЯрдиреЛрдВ рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рд╣рдо рд╕реНрдХреИрдирд░ рдпрд╛ рдПрдВрдЯреА-рдереЗрдлреНрдЯ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред
рд╕реНрдХреИрдирд░ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:


"рдПрдВрдЯреАрд╡рд╛рдпрд░рд╕ рд╢реБрд░реВ рдХрд░реЗрдВ рд╕реНрдХреИрдирд┐рдВрдЧ" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рдХреБрдЫ рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕реНрдХреИрдирд┐рдВрдЧ рдХрд╛рд░реНрдп рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, "рдореБрдЭреЗ рдЦрд░реАрджреЗрдВ" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд░рдХреЗ рд╣рдо рдмрд╕ рдЦрд░реАрджрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рдд рд╣рдо рдЦрд░реАрдж рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдЦреАрдВрдЪрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди "рд╕рд╣рд╛рдпрддрд╛" рдкрд░ рд╣рдо рдПрдХ рд╕рд░рд▓ рд╕реНрдХреНрд░реАрди рдХреА рдорджрдж рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред
рдПрдВрдЯреА-рдереЗрдлреНрдЯ рдХрд╛ рдлреАрдЪрд░ рд▓рдЧрднрдЧ рдПрдХ рдЬреИрд╕рд╛ рджрд┐рдЦрддрд╛ рд╣реИред

рд╕рдВрднрд╛рд╡рд┐рдд рд╕рдорд╛рдзрд╛рди


рдбреАрдЖрдИ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ рд╣рдо рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЛ рдХреИрд╕реЗ рд▓рд╛рдЧреВ рдХрд░реЗрдВрдЧреЗ? рдХрдИ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред

рдкрд╣рд▓рд╛ рд╡рд┐рдХрд▓реНрдк


рдПрдХ рд╕реНрд╡рддрдВрддреНрд░ рдШрдЯрдХ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдЦрд░реАрдж рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдЬреЛ рдХреЗрд╡рд▓ AppComponent рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред


рд▓реЗрдХрд┐рди рдлрд┐рд░ рд╣рдореЗрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝ рд░рд╣рд╛ рд╣реИ: рдПрдХ рд╣реА рдмрд╛рд░ рдореЗрдВ рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЧреНрд░рд╛рдлрд╝ (рдШрдЯрдХреЛрдВ) рд╕реЗ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдПрдХ рдХрдХреНрд╖рд╛ рдореЗрдВ рдХреИрд╕реЗ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рдП? рдХреЗрд╡рд▓ рдЧрдВрджреЗ рдмреИрд╕рд╛рдЦреА рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдЬреЛ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдРрд╕реА рдЪреАрдЬ рд╣реИред

рджреВрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк


рд╣рдо рдЙрдкрд╕рдореБрджрд╛рдп рдореЗрдВ рдЦрд░реАрдж рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ, рдЬреЛ AppComponent рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдФрд░ рд╕реНрдХреИрдирд░ рдФрд░ рдПрдВрдЯреА-рдереЗрдлреНрдЯ рдХреЗ рдШрдЯрдХреЛрдВ рдХреЛ рдЦрд░реАрдж рдШрдЯрдХ рд╕реЗ рд╕рдм-рдХрдорд░реНрд╕ рдмрдирд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред


рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╕рдордЭрддреЗ рд╣реИрдВ, рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рдХрд╛рдлреА рд╕рдорд╛рди рд╕реНрдерд┐рддрд┐ рд╣реЛ рд╕рдХрддреА рд╣реИред рдФрд░ рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдШрдЯрдХреЛрдВ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЧрд╣рд░рд╛рдИ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рдмрдбрд╝реА рдФрд░ рдЬрдЯрд┐рд▓ рд╣реЛ рд╕рдХрддреА рд╣реИред рдФрд░ рдРрд╕рд╛ рдЧреНрд░рд╛рдл рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЛ рдЕрдзрд┐рдХ рд╕реБрд╕рдВрдЧрдд рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдмрдирд╛рдиреЗ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рднреНрд░рд╛рдордХ рд╣реЛрдЧрд╛ред

рддреАрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк


рд╣рдо рдПрдХ рдЕрд▓рдЧ рдШрдЯрдХ рдореЗрдВ рдирд╣реАрдВ, рдмрд▓реНрдХрд┐ рдПрдХ рдЕрд▓рдЧ рдбреИрдЧрд░ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЦрд░реАрдж рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВред рдЖрдЧреЗ рджреЛ рддрд░реАрдХреЗ рд╕рдВрднрд╡ рд╣реИрдВред

рдкрд╣рд▓рд╛ рддрд░реАрдХрд╛
рдЖрдЗрдП рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд▓рд┐рдП рд╕рд┐рдВрдЧрд▓рдЯрди рд╕реНрдХреЛрдк рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЬреЛрдбрд╝реЗрдВ рдФрд░ AppComponent рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред


рд╡рд┐рдХрд▓реНрдк рд▓реЛрдХрдкреНрд░рд┐рдп рд╣реИ, рд▓реЗрдХрд┐рди AppComponent рдмреНрд▓реЛрдЯрд┐рдВрдЧ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИред рдирддреАрдЬрддрди, рдпрд╣ рдЖрдХрд╛рд░ рдореЗрдВ рдлреБрд▓рд╛рддрд╛ рд╣реИ, рдЗрд╕рдореЗрдВ рд╕рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреНрд▓рд╛рд╕реЗрд╕ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ, рдФрд░ рдбреИрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдкреВрд░рд╛ рдмрд┐рдВрджреБ рдХрдХреНрд╖рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╡рд┐рддрд░рдг рдХреЗ рд▓рд┐рдП рдиреАрдЪреЗ рдЖрддрд╛ рд╣реИ - рдлрд╝реАрд▓реНрдб рдпрд╛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдФрд░ рд╕рд┐рдВрдЧрд▓рдЯрд╛рдЙрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд╣реАрдВред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣ DI рд╣реИ, рд▓реЗрдХрд┐рди рд╣рдо рд╡рд╛рд╕реНрддреБрд╢рд┐рд▓реНрдк рдмрд┐рдВрджреБрдУрдВ рдХреЛ рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╣рд░ рдХреЛрдИ рд╣рд░ рдХрд┐рд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИред
рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдкрде рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдпрджрд┐ рдЖрдк рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рд╡рд░реНрдЧ рдХреЛ рдХрд┐рд╕ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рджреЗрдирд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рд╡реИрд╢реНрд╡рд┐рдХ рдмрдирд╛рдирд╛ рдЖрд╕рд╛рди рд╣реИред рдЬрдм рдЖрдк рд▓рд┐рдЧреЗрд╕реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рдХрдо рд╕реЗ рдХрдо рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреА рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреЛ рд▓рд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рд╣реИ, рд╕рд╛рде рд╣реА рдЖрдк рдЕрднреА рддрдХ рд╕рднреА рдХреЛрдб рдХреЛ рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред рдФрд░ рд╡рд╣рд╛рдБ, рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЖрдБрдЦреЗрдВ рд╡реНрдпрд╛рдкрдХ рд░реВрдк рд╕реЗ рдЪрд▓рддреА рд╣реИрдВ, рдФрд░ рдпреЗ рдХреНрд░рд┐рдпрд╛рдПрдВ рдЙрдЪрд┐рдд рд╣реИрдВред рддреНрд░реБрдЯрд┐ рдпрд╣ рд╣реИ рдХрд┐ рдЬрдм рд╕рдм рдХреБрдЫ рдХрдо рдпрд╛ рдЬреНрдпрд╛рджрд╛ рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдХреЛрдИ рднреА рдЗрд╕ AppComponent рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддрд╛ рд╣реИред

рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛
рдпрд╣ рдПрдХ рдПрдХрд▓ рджрд╛рдпрд░реЗ рдХреЗ рд▓рд┐рдП рд╕рднреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдХрдореА рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП PerFeature ред


рдлрд┐рд░ рд╣рдо рдЦрд░реАрджрд╛рд░реА рдХреЗ рдбреИрдЧрд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдШрдЯрдХреЛрдВ рд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдФрд░ рдмрд╕ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд▓рдЧрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдореЗрдВ рдпрд╣ рдЕрд▓рдЧрд╛рд╡ рдореЗрдВ рдирд╣реАрдВ рдирд┐рдХрд▓рддрд╛ рд╣реИред рд╕реНрдХреИрдирд░ рдФрд░ рдПрдВрдЯреА-рдереЗрдлреНрдЯ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЦрд░реАрдж рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕рдм рдХреБрдЫ рдЬрд╛рдирддреА рд╣реИрдВ, рдЗрд╕рдХреЗ рд╕рднреА рдСрдлрд▓ред рдЬрд╛рдиреЗ-рдЕрдирдЬрд╛рдиреЗ рдореЗрдВ рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реЛ рд╕рдХрддреА рд╣реИред рдЕрд░реНрдерд╛рдд, рдЦрд░реАрдж рд╕реБрд╡рд┐рдзрд╛ рдореЗрдВ рд╕реНрдкрд╖реНрдЯ API рдирд╣реАрдВ рд╣реИ, рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмреАрдЪ рдХреА рд╕реАрдорд╛ рдзреБрдВрдзрд▓реА рд╣реИ, рдХреЛрдИ рд╕реНрдкрд╖реНрдЯ рдЕрдиреБрдмрдВрдз рдирд╣реАрдВ рд╣реИред рдпрд╣ рдмреБрд░рд╛ рд╣реИред рдареАрдХ рд╣реИ, рдмрд╣реБ-рдореЙрдбреНрдпреВрд▓рд░ рдореЗрдВ, рдмрд╛рдж рдореЗрдВ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛ред

рд╡рд╛рд╕реНрддреБрджреЛрд╖


рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдореИрдВрдиреЗ рддреАрд╕рд░реЗ рд╡рд┐рдХрд▓реНрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ ред рдкрд╣рд▓рд╛ рддрд░реАрдХрд╛ ред рдпрд╣ рдПрдХ рдЖрд╡рд╢реНрдпрдХ рдЙрдкрд╛рдп рдерд╛ рдЬрдм рд╣рдордиреЗ рдЕрдкрдиреА рд╡рд┐рд░рд╛рд╕рдд рдХреЛ рдзреАрд░реЗ-рдзреАрд░реЗ рд╕рд╛рдорд╛рдиреНрдп рд░реЗрд▓ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд┐рдпрд╛ред рд▓реЗрдХрд┐рди, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рд╣реИ, рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рд╕рд╛рде, рдЖрдкрдХреА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдереЛрдбрд╝реА рдорд┐рд▓рдиреА рд╢реБрд░реВ рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред рд╣рд░ рдХреЛрдИ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд╡рд┐рд╡рд░рдг рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдФрд░ рдкреНрд░рддреНрдпреЗрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкреНрд░рддреНрдпреЗрдХ рдХреЛ рдЬрд╛рди рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдмреНрд▓реЛрдЯрд┐рдВрдЧ AppComponent рдиреЗ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рд╕рдВрдХреЗрдд рджрд┐рдпрд╛ рдХрд┐ рдХреБрдЫ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред
рд╕рдВрдпреЛрдЧ рд╕реЗ, рддреАрд╕рд░рд╛ рд╡рд┐рдХрд▓реНрдк AppComponent рдХреЗ рдЕрдирд▓реЛрдбрд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдорджрдж рдХрд░реЗрдЧрд╛ ред рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛ ред рд▓реЗрдХрд┐рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рдорд┐рд╢реНрд░рдг рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЬреНрдЮрд╛рди рдХрд╣реАрдВ рднреА рдирд╣реАрдВ рдЬрд╛рдПрдЧрд╛ред рдЦреИрд░, рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ, рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдмреАрдЪ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдмрд╣реБрдд рдореБрд╢реНрдХрд┐рд▓ рд╣реЛрдЧрд╛ред

рдЗрдВрдЯрд░рдореАрдбрд┐рдПрдЯ рдХреЗ рдирд┐рд╖реНрдХрд░реНрд╖


рддреЛ, рд╣рдо рдЕрдВрдд рдореЗрдВ рдХреНрдпрд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рд╣рдо рдХрд┐рди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдЪрд▓рд┐рдП рд╕реАрдзреЗ рдЙрд╕ рдмрд┐рдВрджреБ рдкрд░ рдЬрд╛рддреЗ рд╣реИрдВ, рдЬреЛ DI рд╕реЗ рд╢реБрд░реВ рд╣реЛрдХрд░ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдХреА рдУрд░ рдмрдврд╝рддрд╛ рд╣реИ:

  • рдПрдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ DI рддрдВрддреНрд░ рдЬреЛ рдЖрдкрдХреЛ рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рднреАрддрд░ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ (рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╣рдо рд╕реНрдХреИрдирд░ рдФрд░ рдПрдВрдЯреА-рдереЗрдлреНрдЯ рдХреЗ рднреАрддрд░ рдЦрд░реАрджрд╛рд░реА рдХреА рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ), рдмрд┐рдирд╛ рдмреИрд╕рд╛рдЦреА рдФрд░ рджрд░реНрдж рдХреЗред
  • рд╕рдмрд╕реЗ рдкрддрд▓рд╛ AppComponentред
  • рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред
  • рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рд╕реБрд▓рдн рдирд╣реАрдВ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП, рдореИрдВ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдХрд┐ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХрд╛ рд╕рдЦреНрдд рдирд┐рдпрдВрддреНрд░рдг рддрдВрддреНрд░ рд╣реЛред
  • рдиреНрдпреВрдирддрдо рд╕рдВрдЦреНрдпрд╛ рдХреЗ рдЗрд╢рд╛рд░реЛрдВ рдХреЗ рд╕рд╛рде рдХрд┐рд╕реА рдЕрдиреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ рд╕реБрд╡рд┐рдзрд╛ рджреЗрдирд╛ рд╕рдВрднрд╡ рд╣реИред
  • рдЗрд╕ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд▓рд┐рдП рдмрд╣реБ-рдкреНрд░рддрд┐рд░реВрдкрдХрддрд╛ рдФрд░ рд╕рд░реНрд╡реЛрддреНрддрдо рдкреНрд░рдерд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рд╕рдВрдХреНрд░рдордгред

рдореИрдВрдиреЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдмрд╣реБ-рдкреНрд░рддрд┐рд░реВрдкрддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рдЕрдВрдд рдореЗрдВ рд╣реА рдмрд╛рдд рдХреА рдереАред рд╣рдо рдЙрд╕рдХреЗ рдкрд╛рд╕ рдкрд╣реБрдВрдЪреЗрдВрдЧреЗ, рд╣рдо рдЦреБрдж рд╕реЗ рдЖрдЧреЗ рдирд╣реАрдВ рдмрдврд╝реЗрдВрдЧреЗред

"рдПрдХ рдирдП рддрд░реАрдХреЗ рд╕реЗ рд░рд╣рдирд╛"


рдЕрдм рд╣рдо рдЙрдкрд░реЛрдХреНрдд рд╡рд┐рд╢рд▓рд┐рд╕реНрдЯ рдХреЛ рдзреАрд░реЗ-рдзреАрд░реЗ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВрдЧреЗред
рдЪрд▓реЛ рдЪрд▓рддреЗ рд╣реИрдВ!

DI рд╕рдВрд╡рд░реНрджреНрдзрди


рдЙрд╕реА рдбреАрдЖрдИ рд╕реЗ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВред

рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕реНрдХреЛрдк рд╕реЗ рдЗрдирдХрд╛рд░


рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рд▓рд┐рдЦрд╛ рдерд╛, рдореЗрд░реЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ рдкрд╣рд▓реЗ рдпрд╣ рдерд╛: рд╣рд░ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЕрдкрдирд╛ рд╕реНрд╡рдпрдВ рдХрд╛ рджрд╛рдпрд░рд╛ред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдЗрд╕рд╕реЗ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рд▓рд╛рдн рдирд╣реАрдВ рд╣реИрдВред рдХреЗрд╡рд▓ рдмрдбрд╝реА рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рд╕реНрдХреЛрдк рдФрд░ рд╕рд┐рд░рджрд░реНрдж рдХреА рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рдорд╛рддреНрд░рд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВред
рдпрд╣ рд╢реНрд░реГрдВрдЦрд▓рд╛ рдХрд╛рдлреА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ: рд╕рд┐рдВрдЧрд▓рдЯрди - PerFeature - PerScreen ред

рдШрдЯрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдкрдХреНрд╖ рдореЗрдВ рдЙрдкрдХреЗрдВрджреНрд░реЛрдВ рдХрд╛ рдкрд░рд┐рддреНрдпрд╛рдЧ


рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдФрд░ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рдмрд┐рдВрджреБред рд╕рдм -рдХрдВрдкреНрдпреВрдЯрд░реЛрдВ рдХреЗ рд╕рд╛рде , рдЖрдкрдХреЛ рдЕрдзрд┐рдХ рд╕рдЦреНрдд рдкрджрд╛рдиреБрдХреНрд░рдо рд▓рдЧрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рд╛рде рд╣реА рдЖрдкрдиреЗ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╣рд╛рде рдмрд╛рдВрдз рджрд┐рдП рд╣реИрдВ рдФрд░ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдкреИрдВрддрд░реЗрдмрд╛рдЬрд╝реА рдХрд░рдиреЗ рдХрд╛ рдХреЛрдИ рддрд░реАрдХрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, AppComponent рд╕рднреА рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдПрдХ рд╡рд┐рд╢рд╛рд▓ рдЬрдирд░реЗрдЯреЗрдб рдХреНрд▓рд╛рд╕ DaggerAppComponent рднреА рдорд┐рд▓рддрд╛ рд╣реИред
рдШрдЯрдХ рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде , рдЖрдкрдХреЛ рдПрдХ рд╕реБрдкрд░ рд╢рд╛рдВрдд рд▓рд╛рдн рдорд┐рд▓рддрд╛ рд╣реИред рдШрдЯрдХ рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ, рдЖрдк рдШрдЯрдХреЛрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ , рд▓реЗрдХрд┐рди рд╕реНрд╡рдЪреНрдЫ рдЗрдВрдЯрд░рдлреЗрд╕ (рдбреЗрдирд┐рд╕ рдФрд░ рд╡реЛрд▓реЛрдбрд╛ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж)ред рдЗрд╕рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж, рдЖрдк рдЕрдкрдиреА рдкрд╕рдВрдж рдХреЗ рдХрд┐рд╕реА рднреА рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдбреИрдЧрд░ рд╕рдм рдХреБрдЫ рдЦрд╛ рдЬрд╛рдПрдЧрд╛ред рднрд▓реЗ рд╣реА рдПрдХ рд╣реА рдЧреБрдВрдЬрд╛рдЗрд╢ рд╡рд╛рд▓рд╛ рдШрдЯрдХ рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛ:
@Component( dependencies = FeatureDependencies.class, modules = FeatureModule.class ) @PerFeature public abstract class FeatureComponent { // ... } public interface FeatureDependencies { SomeDependency someDependency(); } @Component( modules = AnotherFeatureModule.class ) @PerFeature public abstract class AnotherFeatureComponent implements FeatureDependencies { // ... } 


DI рд╕рдВрд╡рд░реНрджреНрдзрди рд╕реЗ рд▓реЗрдХрд░ рд╡рд╛рд╕реНрддреБ рд╕рдВрд╡рд░реНрджреНрдзрди рддрдХ


рдЖрдЗрдП рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рджреЛрд╣рд░рд╛рдПрдВред рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рдкреВрд░реНрдг, рдЕрдзрд┐рдХрддрдо рд╕реНрд╡рддрдВрддреНрд░ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдореЙрдбреНрдпреВрд▓ рд╣реИ рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЬреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЖрд╕рд╛рди рд╣реИред рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдкрд░рд┐рднрд╛рд╖рд╛ рдореЗрдВ рдкреНрд░рдореБрдЦ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╕реЗ рдПрдХ рд╣реИ "рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде"ред рдЗрд╕рд▓рд┐рдП, рд╣рдо рдЙрди рд╕рднреА рдЪреАрдЬреЛрдВ рдХрд╛ рд╡рд░реНрдгрди рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рд╣рдо рдмрд╛рд╣рд░реА рджреБрдирд┐рдпрд╛ рд╕реЗ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╣рдо рдПрдХ рд╡рд┐рд╢реЗрд╖ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдореЗрдВ рд╡рд░реНрдгрди рдХрд░реЗрдВрдЧреЗред
рдпрд╣рд╛рдБ, рдЪрд▓реЛ рдХрд╣рддреЗ рд╣реИрдВ, рдЦрд░реАрджрд╛рд░реА рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕:
 public interface PurchaseFeatureDependencies { HttpClientApi httpClient(); } 

рдпрд╛ рд╕реНрдХреИрдирд░ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдХрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕:
 public interface ScannerFeatureDependencies { DbClientApi dbClient(); HttpClientApi httpClient(); SomeUtils someUtils(); //       PurchaseInteractor purchaseInteractor(); } 

рдЬреИрд╕рд╛ рдХрд┐ рдбреАрдЖрдИ рдкрд░ рдЕрдиреБрднрд╛рдЧ рдореЗрдВ рдкрд╣рд▓реЗ рд╣реА рдЙрд▓реНрд▓реЗрдЦ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдирд┐рд░реНрднрд░рддрд╛ рдХрд┐рд╕реА рдХреЗ рджреНрд╡рд╛рд░рд╛ рднреА рд▓рд╛рдЧреВ рдХреА рдЬрд╛ рд╕рдХрддреА рд╣реИ рдФрд░ рдЬреИрд╕рд╛ рдЖрдк рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдпреЗ рд╢реБрджреНрдз рдЗрдВрдЯрд░рдлреЗрд╕ рд╣реИрдВ, рдФрд░ рд╣рдорд╛рд░реА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рдЗрд╕ рдЕрддрд┐рд░рд┐рдХреНрдд рдЬреНрдЮрд╛рди рд╕реЗ рдореБрдХреНрдд рд╣реЛ рдЬрд╛рддреА рд╣реИрдВред

"рд╢реБрджреНрдз" рд╕реБрд╡рд┐рдзрд╛ рдХрд╛ рдПрдХ рдЕрдиреНрдп рдорд╣рддреНрд╡рдкреВрд░реНрдг рдШрдЯрдХ рдПрдХ рд╕реНрдкрд╖реНрдЯ рдПрдкреАрдЖрдИ рдХреА рдЙрдкрд╕реНрдерд┐рддрд┐ рд╣реИ, рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдмрд╛рд╣рд░реА рджреБрдирд┐рдпрд╛ рд╕реБрд╡рд┐рдзрд╛ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреА рд╣реИред
рдпрд╣рд╛рдВ рдЦрд░реАрджрд╛рд░реА рдХреЗ рдПрдк рдХреЗ рдлреАрдЪрд░реНрд╕ рджрд┐рдП рдЧрдП рд╣реИрдВ:
 public interface PurchaseFeatureApi { PurchaseInteractor purchaseInteractor(); } 

рдпрд╣реА рд╣реИ, рдмрд╛рд╣рд░реА рджреБрдирд┐рдпрд╛ рдПрдХ PurchaseInteractor рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреА рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЦрд░реАрджрд╛рд░реА рдХрд░рдиреЗ рдХрд╛ рдкреНрд░рдпрд╛рд╕ рдХрд░ рд╕рдХрддреА рд╣реИред рджрд░рдЕрд╕рд▓, рдКрдкрд░ рд╣рдордиреЗ рджреЗрдЦрд╛ рдХрд┐ рдЦрд░реАрдж рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕реНрдХреИрдирд░ рдХреЛ рдПрдХ рдЦрд░реАрдж- рдмрд┐рдХреНрд░реАрдХрд░реНрддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдереАред

рдФрд░ рдпрд╣рд╛рдБ рд╕реНрдХреИрдирд░ рдХреА рдПрдкреАрдЖрдИ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВ:
 public interface ScannerFeatureApi { ScannerStarter scannerStarter(); } 

рдФрд░ рддреБрд░рдВрдд рдореИрдВ ScannerStarter рдХрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд▓рд╛рддрд╛ рд╣реВрдВ:
 public interface ScannerStarter { void start(Context context); } @PerFeature public class ScannerStarterImpl implements ScannerStarter { @Inject public ScannerStarterImpl() { } @Override public void start(Context context) { Class<?> cls = ScannerActivity.class; Intent intent = new Intent(context, cls); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); context.startActivity(intent); } } 

рдпрд╣ рдпрд╣рд╛рдБ рдФрд░ рдЕрдзрд┐рдХ рджрд┐рд▓рдЪрд╕реНрдк рд╣реИ рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рд╕реНрдХреИрдирд░ рдФрд░ рдПрдВрдЯреА-рдереЗрдлреНрдЯ рдХрд╛рдлреА рдмрдВрдж рдФрд░ рдкреГрдердХ рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВред рдореЗрд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдЗрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЧрддрд┐рд╡рд┐рдзрд┐рдпреЛрдВ рдкрд░ рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рдиреЗрд╡рд┐рдЧреЗрд╢рди рдЖрджрд┐ рдХреЗ рд╕рд╛рде, рдпрд╣реА рд╣реИ, рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╕ рдпрд╣рд╛рдВ рдЧрддрд┐рд╡рд┐рдзрд┐ рд╢реБрд░реВ рдХрд░рдирд╛ рдкрд░реНрдпрд╛рдкреНрдд рд╣реИред рдЧрддрд┐рд╡рд┐рдзрд┐ рдорд░ рдЬрд╛рддреА рд╣реИ - рд╕реБрд╡рд┐рдзрд╛ рдорд░ рдЬрд╛рддреА рд╣реИред рдЖрдк "рд╕рд┐рдВрдЧрд▓ рдПрдХреНрдЯрд┐рд╡рд┐рдЯреА" рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдкрд░ рдХрд╛рдо рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдлрд┐рд░ рдПрдкреАрдЖрдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдХ рдлреНрд░реИрдЧрдореЗрдВрдЯ рдореИрдирдЬрд░ рдФрд░ рдХреБрдЫ рдХреЙрд▓рдмреИрдХ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлреАрдЪрд░ рд░рд┐рдкреЛрд░реНрдЯ рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкреВрд░рд╛ рд╣реЛ рдЧрдпрд╛ рд╣реИред рдХрдИ рд╡рд┐рд╡рд┐рдзрддрд╛рдПрдВ рд╣реИрдВред
рд╣рдо рдпрд╣ рднреА рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╣рдореЗрдВ рд╕реНрдХреИрдирд░ рдФрд░ рдПрдВрдЯреА-рдереЗрдлреНрдЯ рдЬреИрд╕реА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдкрд░ рд╕реНрд╡рддрдВрддреНрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рдХрд╛ рдЕрдзрд┐рдХрд╛рд░ рд╣реИред рдЦрд░реАрдж рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЬреЛ рдХрд┐ рдХрд┐рд╕реА рдЪреАрдЬ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реБрд╡рд┐рдзрд╛-рдЬреЛрдбрд╝ рд╣реИ рдФрд░ рдЕрдкрдиреЗ рдЖрдк рд╕реЗ, рдпрд╣ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реИред рд╣рд╛рдВ, рдпрд╣ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдиреНрдп рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдХрд╛ рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдкреВрд░рдХ рд╣реИред

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдХрд▓реНрдкрдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдХреБрдЫ рдмрд┐рдВрджреБ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдЬреЛ рд╕реБрд╡рд┐рдзрд╛рдУрдВ, рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдФрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЬреЛрдбрд╝рддрд╛ рд╣реИред рдпрд╣ рдмрд┐рдВрджреБ рдбреИрдЧрд░ рдШрдЯрдХ рд╣реИред
рд╕реНрдХреИрдирд░ рдХреА рд╕реБрд╡рд┐рдзрд╛ рдШрдЯрдХ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:
 @Component(modules = { ScannerFeatureModule.class, ScreenNavigationModule.class // ScannerFeatureDependencies - api    }, dependencies = ScannerFeatureDependencies.class) @PerFeature // ScannerFeatureApi - api   public abstract class ScannerFeatureComponent implements ScannerFeatureApi { private static volatile ScannerFeatureComponent sScannerFeatureComponent; //   public static ScannerFeatureApi initAndGet( ScannerFeatureDependencies scannerFeatureDependencies) { if (sScannerFeatureComponent == null) { synchronized (ScannerFeatureComponent.class) { if (sScannerFeatureComponent == null) { sScannerFeatureComponent = DaggerScannerFeatureComponent.builder() .scannerFeatureDependencies(scannerFeatureDependencies) .build(); } } } return sScannerFeatureComponent; } //           public static ScannerFeatureComponent get() { if (sScannerFeatureComponent == null) { throw new RuntimeException( "You must call 'initAndGet(ScannerFeatureDependenciesComponent scannerFeatureDependenciesComponent)' method" ); } return sScannerFeatureComponent; } //    (   ) public void resetComponent() { sScannerFeatureComponent = null; } public abstract void inject(ScannerActivity scannerActivity); //         Moxy public abstract ScannerScreenComponent scannerScreenComponent(); } 


рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдкрдХреЗ рд▓рд┐рдП рдХреБрдЫ рдирдпрд╛ рдирд╣реАрдВ рд╣реИред

рдмрд╣реБ-рдкреНрд░рддрд┐рд░реВрдкрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреНрд░рдордг


рддреЛ, рдЖрдк рдФрд░ рдореИрдВ рдЗрд╕рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдФрд░ рдмрд╛рд╣рд░реА рдПрдкреАрдЖрдИ рдХреЗ рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕реБрд╡рд┐рдзрд╛ рдХреА рд╕реАрдорд╛рдУрдВ рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдереЗред рд╣рдордиреЗ рдпрд╣ рднреА рдкрддрд╛ рд▓рдЧрд╛рдпрд╛ рдХрд┐ рдХреИрд╕реЗ рдЗрд╕реЗ рдбреИрдЧрд░ рдореЗрдВ рдХреНрд░реИрдВрдХ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдФрд░ рдЕрдм рд╣рдо рдЕрдЧрд▓реЗ рддрд╛рд░реНрдХрд┐рдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдХрджрдо рдкрд░ рдЖрддреЗ рд╣реИрдВ - рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╡рд┐рднрд╛рдЬрдиред
рддреБрд░рдВрдд рдПрдХ рдкрд░реАрдХреНрд╖рдг рдорд╛рдорд▓рд╛ рдЦреЛрд▓реЗрдВ - рдпрд╣ рдЖрд╕рд╛рди рд╣реЛ рдЬрд╛рдПрдЧрд╛ред
рдЖрдЗрдП рддрд╕реНрд╡реАрд░ рдХреЛ рд╕рд╛рдорд╛рдиреНрдп рд░реВрдк рд╕реЗ рджреЗрдЦреЗрдВ:

рдФрд░ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдкреИрдХреЗрдЬ рд╕рдВрд░рдЪрдирд╛ рдХреЛ рджреЗрдЦреЗрдВ:

рдЕрдм рд╣рд░ рд╡рд╕реНрддреБ рдкрд░ рдзреНрдпрд╛рди рд╕реЗ рдмрд╛рдд рдХрд░реЗрдВред

рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рд╣рдо рдЪрд╛рд░ рдмрдбрд╝реЗ рдмреНрд▓реЙрдХреЛрдВ рдХреЛ рджреЗрдЦрддреЗ рд╣реИрдВ: рдПрдкреНрд▓рд┐рдХреЗрд╢рди , рдПрдкреАрдЖрдИ , рдЗрдВрдкреНрд▓ рдФрд░ рдмрд░реНрддрди ред APIs , Impl, рдФрд░ Utils рдореЗрдВ, рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдХреЛрд░ рдпрд╛ рдпрд╛ рдлреАрдЪрд░ рдкрд░ рд╢реБрд░реВ рд╣реЛрддреЗ рд╣реИрдВред рдкрд╣рд▓реЗ рдЙрдирдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рддреЗ рд╣реИрдВред

рдХреЛрд░ рдФрд░ рдлреАрдЪрд░ рдореЗрдВ рдЕрд▓рдЧ рд╣реЛрдирд╛


рдореИрдВ рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдХреЛ рджреЛ рд╢реНрд░реЗрдгрд┐рдпреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ: рдХреЛрд░- рдФрд░ рдлреАрдЪрд░- ред
рдлреАрдЪрд░ рдореЗрдВ- рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдиреЗ рдЕрдиреБрдорд╛рди рд▓рдЧрд╛рдпрд╛ рд╣реЛрдЧрд╛, рд╣рдорд╛рд░реА рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВред рдХреЛрд░ рдореЗрдВ- рдпреВрдЯрд┐рд▓рд┐рдЯреАрдЬ, рдиреЗрдЯрд╡рд░реНрдХ, рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рдЖрджрд┐ рдЬреИрд╕реА рдЪреАрдЬреЗрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдореЗрдВ рдХреЛрдИ рдлреАрдЪрд░реНрд╕ рдЗрдВрдЯрд░рдлреЗрд╕ рдирд╣реАрдВ рд╣реИрдВред рдФрд░ рдХреЛрд░ рдПрдХ рдореЛрдиреЛрд▓рд┐рде рдирд╣реАрдВ рд╣реИред рдореИрдВ рдХреЛрд░-рдореЙрдбреНрдпреВрд▓ рдХреЛ рддрд╛рд░реНрдХрд┐рдХ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рддреЛрдбрд╝рдиреЗ рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдлрд╝реАрдЪрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рд▓реЛрдб рдХрд░рдиреЗ рдХреЗ рдЦрд┐рд▓рд╛рдл рд╣реВрдВред
рдореЙрдбреНрдпреВрд▓ рдХреЗ рдирд╛рдо рдкрд░, рдкрд╣рд▓реЗ рдХреЛрд░ рдпрд╛ рдлреАрдЪрд░ рд▓рд┐рдЦреЗрдВред рдореЙрдбреНрдпреВрд▓ рдирд╛рдо рдореЗрдВ рдЖрдЧреЗ рдПрдХ рддрд╛рд░реНрдХрд┐рдХ рдирд╛рдо ( рд╕реНрдХреИрдирд░ , рдиреЗрдЯрд╡рд░реНрдХ , рдЖрджрд┐) рд╣реИред

рдЕрдм рдЪрд╛рд░ рдмрдбрд╝реЗ рдмреНрд▓реЙрдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ: рдПрдкреНрд▓реАрдХреЗрд╢рди, рдПрдкреАрдЖрдИ, рдЗрдореНрдкрд▓ рдФрд░ рдпреВрдЯрд┐рд▓реНрд╕


рдПрдкреАрдЖрдИ
рдкреНрд░рддреНрдпреЗрдХ рд╕реБрд╡рд┐рдзрд╛ рдпрд╛ рдХреЛрд░ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдПрдкреАрдЖрдИ рдФрд░ рдЗрдВрдкреНрд▓рд╛рдВрдЯ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред рдПрдкреАрдЖрдИ рдореЗрдВ рдПрдХ рдмрд╛рд╣рд░реА рдПрдкреАрдЖрдИ рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЖрдк рдХрд┐рд╕реА рд╕реБрд╡рд┐рдзрд╛ рдпрд╛ рдХреЛрд░ рддрдХ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗ рд╣реИрдВред рдХреЗрд╡рд▓ рдпрд╣, рдФрд░ рдЕрдзрд┐рдХ рдХреБрдЫ рдирд╣реАрдВ:

рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдкреАрдЖрдИ рдореЙрдбреНрдпреВрд▓ рдХрд┐рд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рд╣реИ, рдпрд╣ рдПрдХ рдмрд┐рд▓реНрдХреБрд▓ рдЕрд▓рдЧ рдореЙрдбреНрдпреВрд▓ рд╣реИред

utils
рдКрдкрд░ рджрд┐рдП рдЧрдП рдирд┐рдпрдо рдХреЗ рдПрдХрдорд╛рддреНрд░ рдЕрдкрд╡рд╛рдж рдХреЛ рдХреБрдЫ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЙрдкрдпреЛрдЧрд┐рддрд╛рд╡рд╛рджреА рдЪреАрдЬреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдорд╛рдирд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЬреЛ рдЗрд╕реЗ рдПрдкреАрдЖрдИ рдФрд░ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рддреЛрдбрд╝рдиреЗ рдХрд╛ рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИред

impl
рдпрд╣рд╛рдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдХреЛрд░-рдЗрдореНрдкреИрдХреНрдЯ рдФрд░ рдлреАрдЪрд░-рдЗрдореНрдкреНрд▓реАрдореЗрдВрдЯ рдореЗрдВ рдПрдХ рдЙрдкрдЦрдВрдб рд╣реИред
рдХреЛрд░-рдЗрдореНрдкреНрд▓рд╛рдВрдЯ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рднреА рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВред рдЙрдирдХрд╛ рдПрдХрдорд╛рддреНрд░ рдирд┐рд░реНрднрд░рддрд╛ рдПрдкрд┐ рдореЙрдбреНрдпреВрд▓ рд╣реИ ред рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, core-db-impl рдореЙрдбреНрдпреВрд▓ рдХреЗ build.gradle рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:
 // bla-bla-bla dependencies { implementation project(':core-db-api') // bla-bla-bla } 

рдЕрдм рдлреАрдЪрд░-рдЗрдореНрдкреНрд▓рд╛рдВрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ ред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рд▓реЙрдЬрд┐рдХ рдореЗрдВ рд╢реЗрд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИред рд╕реБрд╡рд┐рдзрд╛-рдирд┐рд╣рд┐рдд рд╕рдореВрд╣ рдХреЗ рдореЙрдбреНрдпреВрд▓ API рдпрд╛ Utils рд╕рдореВрд╣ рдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рди рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ Impl рд╕рдореВрд╣ рдХреЗ рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред
рдЬреИрд╕рд╛ рдХрд┐ рд╣рдо рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдореЗрдВ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд╕рднреА рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдЬрдорд╛ рд╣реЛрддреА рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕реНрдХреИрди рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдПрдкреАрдЖрдИ рдЗрд╕ рдкреНрд░рдХрд╛рд░ рджрд┐рдЦрддрд╛ рд╣реИ:
 public interface ScannerFeatureDependencies { // core-db-api DbClientApi dbClient(); // core-network-api HttpClientApi httpClient(); // core-utils SomeUtils someUtils(); // feature-purchase-api PurchaseInteractor purchaseInteractor(); } 

рддрджрдиреБрд╕рд╛рд░, build.gradle рд╕реБрд╡рд┐рдзрд╛-рд╕реНрдХреИрдирд░-рдЗрдореНрдкреНрд▓рд╛рдиреНрдЯ рдЗрд╕ рддрд░рд╣ рд╣реЛрдЧрд╛:
 // bla-bla-bla dependencies { implementation project(':core-utils') implementation project(':core-network-api') implementation project(':core-db-api') implementation project(':feature-purchase-api') implementation project(':feature-scanner-api') // bla-bla-bla } 

рдЖрдк рдкреВрдЫ рд╕рдХрддреЗ рд╣реИрдВ, рдПрдкреАрдИ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдПрдкреАрдЖрдИ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд╣реИ? рддрдереНрдп рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдПрдХ рд╡рд┐рд╡рд░рдг рд╣реИред рдпрд╣реА рд╣реИ, рдпрд╣ рдПрдХ рд╡рд┐рд╢реЗрд╖ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ рдЬрд┐рд╕реЗ рдХреБрдЫ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдирд┐рд░реНрднрд░рддрд╛ рдПрдкреАрдЖрдИ рд╕реНрдХреИрдирд░ рдХреЗ рд▓рд┐рдП рдпрд╣рд╛рдБ рд╣реИ:


рд▓рдШреБ рд╡рд╛рд╕реНрддреБрджреЛрд╖
рдЖрдЗрдП рдЙрдкрд░реЛрдХреНрдд рд╕рднреА рдХреЛ рдкрдЪрд╛рдПрдВ рдФрд░ рдЕрдкрдиреЗ рд▓рд┐рдП рдлреАрдЪрд░ -...- рдЗрдореНрдкреНрд▓рд╛рдВрдЯ-рдореЙрдбреНрдпреВрд▓ рдФрд░ рдЕрдиреНрдп рдореЙрдбреНрдпреВрд▓ рдкрд░ рдЙрдирдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рд╡рд╛рд╕реНрддреБ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рд╕рдордЭреЗрдВ ред
рдореБрдЭреЗ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХреЗ рд▓рд┐рдП рджреЛ рд╕рдмрд╕реЗ рд▓реЛрдХрдкреНрд░рд┐рдп рдирд┐рд░реНрднрд░рддрд╛ рдореИрдкрд┐рдВрдЧ рдкреИрдЯрд░реНрди рдорд┐рд▓реЗ:

  • рдПрдХ рдореЙрдбреНрдпреВрд▓ рдХрд┐рд╕реА рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рди рд╕рдХрддрд╛ рд╣реИред рдХреЛрдИ рдирд┐рдпрдо рдирд╣реАрдВ рд╣реИрдВред рдЯрд┐рдкреНрдкрдгреА рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реИред
  • рдореЙрдбреНрдпреВрд▓ рдХреЗрд╡рд▓ рдХреЛрд░ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддреЗ рд╣реИрдВред рдФрд░ рдХреЛрд░ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕рднреА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рд╕рднреА рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗрдВрджреНрд░рд┐рдд рд╣реИрдВред рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдПрдХ рдФрд░ рдХрдЪрд░рд╛ рдбрдВрдк рдореЗрдВ рдХреЛрд░ рдмрджрд▓рдиреЗ рдХрд╛ рдЬреЛрдЦрд┐рдо рд╣реИред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рд╣рдо рдЕрдкрдиреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдЗрди рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдХреЙрдкреА рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдФрд░ рдЗрд╕реЗ рдХреЛрд░ рдореЗрдВ рднреА рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ред рдЕрдкрдиреЗ рдЖрдк рдореЗрдВ рдЗрдВрдЯрд░рдлреЗрд╕ рдХреА рдмреЗрд╡рдХреВрдл рдХреЙрдкреА-рдкреЗрд╕реНрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдмрд╣реБрдд рдЖрдХрд░реНрд╖рдХ рдФрд░ рдкреБрди: рдкреНрд░рдпреЛрдЬреНрдп рдирд╣реАрдВ рд╣реИ, рдЬрдм рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЛ рдЕрдкрдбреЗрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореИрдВ рдПрдкреАрдЖрдИ рдФрд░ рдХреЗрд╡рд▓ рдПрдкреА (рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ, рдмрд░реНрддрди-рд╕рдореВрд╣) рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЬреНрдЮрд╛рди рдХреА рд╡рдХрд╛рд▓рдд рдХрд░рддрд╛ рд╣реВрдВред рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рднреА рдирд╣реАрдВ рдкрддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдпрд╣ рдкрддрд╛ рдЪрд▓рддрд╛ рд╣реИ рдХрд┐ рд╕реБрд╡рд┐рдзрд╛рдПрдБ рдЕрдиреНрдп рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рди рд╕рдХрддреА рд╣реИрдВ (рдПрдкреАрдЖрдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ), рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЪрд▓рд╛рдПрдВред рдпрд╣ рдПрдХ рдЧрдбрд╝рдмрдбрд╝ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ?
рдирд┐рд╖реНрдкрдХреНрд╖ рдЯрд┐рдкреНрдкрдгреАред рдХреБрдЫ рд╕реБрдкрд░-рдХреНрд▓рд┐рдпрд░ рдирд┐рдпрдореЛрдВ рдХреЛ рдкреВрд░рд╛ рдХрд░рдирд╛ рдХрдард┐рди рд╣реИред рд╣рд░ рдЪреАрдЬ рдореЗрдВ рдПрдХ рдорд╛рдк рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рд╣рдордиреЗ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЗрд╕ рдореБрджреНрджреЗ рдХреЛ рдереЛрдбрд╝рд╛ рдКрдкрд░ рдЫреБрдЖ рд╣реИ, рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рд╕реНрд╡рддрдВрддреНрд░ (рд╕реНрдХреЗрдирд░ рдФрд░ рдПрдВрдЯреА-рдереЗрдлреНрдЯ) рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реБрдП - рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рдФрд░ рдЕрд▓рдЧ, рдФрд░ "рд╕рдВрджрд░реНрдн рдореЗрдВ" рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ, рдЕрд░реНрдерд╛рддреН, рд╡реЗ рд╣рдореЗрд╢рд╛ рдХреБрдЫ (рдЦрд░реАрдж) рдФрд░ рдЖрдорддреМрд░ рдкрд░ рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЗ рд░реВрдк рдореЗрдВ рд▓реЙрдиреНрдЪ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ рдмрд┐рдирд╛ ui рдпрд╣реА рдХрд╛рд░рдг рд╣реИ рдХрд┐ рд╕реНрдХреИрдирд░ рдФрд░ рд╡рд┐рд░реЛрдзреА рдЪреЛрд░реА рдЦрд░реАрдж рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдгред рдХрд▓реНрдкрдирд╛ рдХреАрдЬрд┐рдП рдХрд┐ рдПрдВрдЯреА-рдереЗрдлреНрдЯ рдореЗрдВ рд╡рд╛рдЗрдк рдбреЗрдЯрд╛ рдЬреИрд╕реА рдХреЛрдИ рдЪреАрдЬрд╝ рд╣реЛрддреА рд╣реИ, рдпрд╛рдиреА рдлреЛрди рдХреЗ рд╕рднреА рдбреЗрдЯрд╛ рдХреЛ рдХреНрд▓реАрдпрд░ рдХрд░рдирд╛ред рд╡реНрдпрд╛рдкрд╛рд░ рддрд░реНрдХ рдХрд╛ рдПрдХ рдмрд╣реБрдд рд╣реИ, ui, рдпрд╣ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд▓рдЧ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдПрдХ рдЕрд▓рдЧ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдкреЛрдВрдЫ рдбреЗрдЯрд╛ рдЖрд╡рдВрдЯрд┐рдд рдХрд░рдирд╛ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИред рдФрд░ рдлрд┐рд░ рдХрд╛рдВрдЯрд╛ред рдпрджрд┐ рд╡рд╛рдЗрдк рдбреЗрдЯрд╛ рд╣рдореЗрд╢рд╛ рдПрдВрдЯреА-рдереЗрдлрд╝реНрдЯ рд╕реЗ рд╣реА рд▓реЙрдиреНрдЪ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╣рдореЗрд╢рд╛ рдПрдВрдЯреА-рдереЗрдлрд╝реНрдЯ рдореЗрдВ рдореМрдЬреВрдж рд╣реЛрддрд╛ рд╣реИ, рддреЛ рдпрд╣ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ рдХрд┐ рдПрдВрдЯреА-рдереЗрдлрд╝реНрдЯ рдХреЛ рдбреЗрдЯрд╛ рдХреЛ рдкреЛрдВрдЫрдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕реЗ рдЕрдкрдиреЗ рджрдо рдкрд░ рдЪрд▓рд╛рдПрдЧрд╛ред рдФрд░ рд╕рдВрдЪрд┐рдд рдореЙрдбреНрдпреВрд▓, рдРрдк, рддрдм рдХреЗрд╡рд▓ рдПрдВрдЯреА-рдереЗрдлреНрдЯ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╡рд╛рдЗрдк рдбреЗрдЯрд╛ рдХрд╣реАрдВ рдФрд░ рд╢реБрд░реВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рд╣рдореЗрд╢рд╛ рдПрдВрдЯреА-рдереЗрдлреНрдЯ рдореЗрдВ рдореМрдЬреВрдж рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ (рдпрд╛рдиреА, рдпрд╣ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ), рддреЛ рдпрд╣ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ рдХрд┐ рдПрдВрдЯреА-рдереЗрдлреНрдЯ рдХреЛ рдЗрд╕ рдлреАрдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рдирд╣реАрдВ рд╣реИ рдФрд░ рдмрд╕ рдХреБрдЫ рдмрд╛рд╣рд░реА (рд░рд╛рдЙрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ) рдХрд╣рддрд╛ рд╣реИ, рдХреБрдЫ рдХреЙрд▓рдмреИрдХ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдпрд╣ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐) рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдмрдЯрди рдХреЛ рджрдмрд╛рдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рддрд╣рдд рдХреНрдпрд╛ рд▓реЙрдиреНрдЪ рдХрд░рдирд╛ рд╣реИ, рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдВрдЯреА-рдереЗрдлреНрдЯ рд╕реБрд╡рд┐рдзрд╛ (рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди, рд╡рд┐рд╢рд┐рд╖реНрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди) рдХреЗ рдЙрдкрднреЛрдХреНрддрд╛ рдХрд╛ рд╡реНрдпрд╡рд╕рд╛рдп рд╣реИред

рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдПрдХ рджрд┐рд▓рдЪрд╕реНрдк рд╕рд╡рд╛рд▓ рд╣реИред рдпрджрд┐, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕реНрдХреИрдирд░ рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдЕрд▓рд╛рд╡рд╛ рднреА рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ : рдлрд╝реАрдЪрд░-рд╕реНрдХреИрдирд░-рдПрдкреА рдФрд░ : рдлрд╝реАрдЪрд░-рд╕реНрдХреИрдирд░-рдЗрдореНрдкреИрдХреНрдЯ рдФрд░ рд╡реЗ рдореЙрдбреНрдпреВрд▓ рдЬрд┐рди рдкрд░ рд╕реНрдХреИрдирд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ : ( рдХреЛрд░-рдмрд░реНрддрди,: рдХреЛрд░-рдиреЗрдЯрд╡рд░реНрдХ- рдПрдкреАрдЖрдИ ,: рдХреЛрд░-рдбреАрдмреА-рдПрдкреА ,: рд╕реБрд╡рд┐рдзрд╛-рдЦрд░реАрдж-рдПрдкреАрдЖрдИ )ред
рд╣рд╛рдБ рд▓реЗрдХрд┐рди! рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ, рдЖрдкрдХреЗ рд╕рднреА рдПрдкреАрдЖрдИ рдореЙрдбреНрдпреВрд▓ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рд╕реНрд╡рддрдВрддреНрд░ рд╣реИрдВ, рдФрд░ рдХреЗрд╡рд▓ рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рдбреЗрдЯрд╛ рдореЙрдбрд▓ рд╣реИрдВред рдХреЛрдИ рддрд░реНрдХ рдирд╣реАрдВред рдФрд░ рдпреЗ рдореЙрдбреНрдпреВрд▓ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ рдЕрд▓рдЧ рд╣реЛ рдЧрдП рд╣реИрдВ, рдФрд░ : рдХреЛрд░-рдпреВрдЯрд┐рд▓рд┐рдЯреА рдЖрдорддреМрд░ рдкрд░ рд╕рднреА рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдореЙрдбреНрдпреВрд▓ рд╣реИред
рджреВрд╕рд░реЗ, рдЖрдк рдПрдкреА рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдкреА-рдореЙрдбреНрдпреВрд▓ рдХреЛ рдЗрдХрдЯреНрдард╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдорд╛рд╡реЗрди рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХрд┐рд╕реА рдЕрдиреНрдп рдПрдкреНрд▓рд┐рдХреЗрд╢рди рддрдХ рдкрд╣реБрдВрдЪрд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рдЖрдк рдЙрдиреНрд╣реЗрдВ рдПрдХ рдЙрдк-рдореЙрдбреНрдпреВрд▓ рдХреЗ рд░реВрдк рдореЗрдВ рдХрдиреЗрдХреНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕рдВрд╕реНрдХрд░рдг рд╣реЛрдЧрд╛, рдирд┐рдпрдВрддреНрд░рдг рд╣реЛрдЧрд╛, рдЕрдЦрдВрдбрддрд╛ рд╣реЛрдЧреАред
рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрдХ рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдореЙрдбреНрдпреВрд▓ (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЙрдбреНрдпреВрд▓) рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдмрд╣реБрдд рд╕рд░рд▓, рд╕реНрдкрд╖реНрдЯ рдФрд░ рд╕реБрд░рдХреНрд╖рд┐рдд рджрд┐рдЦрддрд╛ рд╣реИред

рдЖрд╡реЗрджрди


рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рд╕реБрд╡рд┐рдзрд╛рдУрдВ, рдореЙрдбреНрдпреВрд▓, рдЙрдирдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рдПрдХ рдкрддрд▓рд╛ рдФрд░ рд╕рдордЭрдиреЗ рдпреЛрдЧреНрдп рдЪрд┐рддреНрд░ рд╣реИ рдФрд░ рдпрд╣ рд╕рдм рд╣реИред рдЕрдм рд╣рдо рдПрдХ рдЪрд░рдореЛрддреНрдХрд░реНрд╖ рдкрд░ рдЖрддреЗ рд╣реИрдВ - рдпрд╣ рдПрдкреАрдЖрдИ рдФрд░ рдЙрдирдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдПрдХ рд╕рдВрдпреЛрдЬрди рд╣реИ, рдЬреЛ рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЖрджрд┐, рд▓реЗрдХрд┐рди Gredloi рдореЙрдбреНрдпреВрд▓ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗред рдХрдиреЗрдХреНрд╢рди рдмрд┐рдВрджреБ рдЖрдорддреМрд░ рдкрд░ рдРрдк рд╣реА рд╣реИред
рд╡реИрд╕реЗ, рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдпрд╣ рдмрд┐рдВрджреБ рдЕрднреА рднреА рд╕реБрд╡рд┐рдзрд╛-рд╕реНрдХреИрдирд░-рдЙрджрд╛рд╣рд░рдг рд╣реИ ред рдЙрдкрд░реЛрдХреНрдд рджреГрд╖реНрдЯрд┐рдХреЛрдг рдЖрдкрдХреЛ рдЕрдкрдиреА рдкреНрд░рддреНрдпреЗрдХ рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рдПрдХ рдЕрд▓рдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд░реВрдк рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИ, рдЬреЛ рд╕рдХреНрд░рд┐рдп рд╡рд┐рдХрд╛рд╕ рдХреЗ рджреМрд░рд╛рди рдмрд┐рд▓реНрдб рд╕рдордп рдХреЛ рдмрд╣реБрдд рдмрдЪрд╛рддрд╛ рд╣реИред рдмреНрдпреВрдЯреА!

рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП, рдЖрдЗрдП рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ рдХрд┐ рдРрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╕рдм рдХреБрдЫ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдкреНрдпрд╛рд░ рдХрд┐рдП рдЧрдП рд╕реНрдХреИрдирд░ рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рд╣реЛрддрд╛ рд╣реИред
рд╕реБрд╡рд┐рдзрд╛ рдХреЛ рддреБрд░рдВрдд рдпрд╛рдж рдХрд░реЗрдВ:
рд╡реИрдЬреНрдЮрд╛рдирд┐рдХ рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рд╣реИрдВ:
 public interface ScannerFeatureDependencies { // core-db-api DbClientApi dbClient(); // core-network-api HttpClientApi httpClient(); // core-utils SomeUtils someUtils(); // feature-purchase-api PurchaseInteractor purchaseInteractor(); } 

рдЗрд╕рд▓рд┐рдП : рдлрд╝реАрдЪрд░-рд╕реНрдХреИрдирд░-рдЗрдореНрдкреНрд▓рд╛рдВрдЯ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЙрдбреНрдпреВрд▓ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ:
 // bla-bla-bla dependencies { implementation project(':core-utils') implementation project(':core-network-api') implementation project(':core-db-api') implementation project(':feature-purchase-api') implementation project(':feature-scanner-api') // bla-bla-bla } 


рдЗрд╕рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╣рдо рдПрдХ рдбреИрдЧрд░ рдШрдЯрдХ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдЬреЛ рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рдПрдк рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддрд╛ рд╣реИ:
 @Component(dependencies = { CoreUtilsApi.class, CoreNetworkApi.class, CoreDbApi.class, PurchaseFeatureApi.class }) @PerFeature interface ScannerFeatureDependenciesComponent extends ScannerFeatureDependencies { } 

рдореИрдВрдиреЗ рдЗрд╕ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП ScannerFeatureComponent рдореЗрдВ рд░рдЦрд╛:
 @Component(modules = { ScannerFeatureModule.class, ScreenNavigationModule.class }, dependencies = ScannerFeatureDependencies.class) @PerFeature public abstract class ScannerFeatureComponent implements ScannerFeatureApi { // bla-bla-bla @Component(dependencies = { CoreUtilsApi.class, CoreNetworkApi.class, CoreDbApi.class, PurchaseFeatureApi.class }) @PerFeature interface ScannerFeatureDependenciesComponent extends ScannerFeatureDependencies { } } 


рдЕрдм Appред рдРрдк рдХреЛ рдЙрди рд╕рднреА рдореЙрдбреНрдпреВрд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдкрддрд╛ рд╣реИ рдЬрд┐рдирдХреА рдЗрд╕реЗ рдЬрд╝рд░реВрд░рдд рд╣реИ ( рдХреЛрд░-, рдлрд╝реАрдЪрд░-, рдПрдкреАрдЖрдИ, рдЗрдореНрдкреНрд▓рд╛рдиреНрдЯ )
 // bla-bla-bla dependencies { implementation project(':core-utils') implementation project(':core-db-api') implementation project(':core-db-impl') implementation project(':core-network-api') implementation project(':core-network-impl') implementation project(':feature-scanner-api') implementation project(':feature-scanner-impl') implementation project(':feature-antitheft-api') implementation project(':feature-antitheft-impl') implementation project(':feature-purchase-api') implementation project(':feature-purchase-impl') // bla-bla-bla } 

рдЗрд╕рдХреЗ рдмрд╛рдж, рдПрдХ рд╕рд╣рд╛рдпрдХ рд╡рд░реНрдЧ рдмрдирд╛рдПрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, FeatureProxyInjector ред рдпрд╣ рд╕рднреА рдШрдЯрдХреЛрдВ рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдЖрд░рдВрдн рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░реЗрдЧрд╛, рдФрд░ рдпрд╣ рдЗрд╕ рд╡рд░реНрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╣реИ рдХрд┐ рд╣рдо рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдУрд░ рдореБрдбрд╝реЗрдВрдЧреЗред рдЖрдЗрдП рджреЗрдЦреЗрдВ рдХрд┐ рд╕реНрдХреИрдирд░ рд╕реБрд╡рд┐рдзрд╛ рдШрдЯрдХ рдХреЛ рдХреИрд╕реЗ рдЖрд░рдВрдн рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ:
 public class FeatureProxyInjector { // another... public static ScannerFeatureApi getFeatureScanner() { return ScannerFeatureComponent.initAndGet( DaggerScannerFeatureComponent_ScannerFeatureDependenciesComponent.builder() .coreDbApi(CoreDbComponent.get()) .coreNetworkApi(CoreNetworkComponent.get()) .coreUtilsApi(CoreUtilsComponent.get()) .purchaseFeatureApi(featurePurchaseGet()) .build() ); } } 

рдмрд╛рд╣реНрдп рд░реВрдк рд╕реЗ, рд╣рдо рдлрд╝реАрдЪрд░ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ ( ScannerFeatureApi ) рджреЗрддреЗ рд╣реИрдВ, рдФрд░ рдЕрдВрджрд░ рд╣рдо рдХреЗрд╡рд▓ рд╕рдВрдкреВрд░реНрдг рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдирд┐рд░реНрднрд░рддрд╛ рдЧреНрд░рд╛рдлрд╝ ( ScannerFeatureComponent.initAndGet (...) рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ ) рдХреЛ рдЖрд░рдВрдн рдХрд░рддреЗ рд╣реИрдВред
DaggerPurchaseComponent_PurchaseFeatureDependenciesComponent , Dagger рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдИ рдЧрдИ PurchaseFeatureD dependenciesComponent рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реИ, рдЬрд┐рд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╣рдордиреЗ рдКрдкрд░ рдмрд╛рдд рдХреА рдереА, рдЬрд╣рд╛рдБ рд╣рдо рдмрд┐рд▓реНрдбрд░ рдореЗрдВ рдПрдкреАрдЖрдИ-рдореЙрдбреНрдпреВрд▓ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
рдпрд╣ рд╕рдм рдЬрд╛рджреВ рд╣реИред рдлрд┐рд░ рд╕реЗ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред

рдЙрджрд╛рд╣рд░рдг рдХреА рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рд╕рднреА рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛рдУрдВ рдХреЛ рднреА рдкреВрд░рд╛ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ : рдлрд╝реАрдЪрд░-рд╕реНрдХреИрдирд░-рдЗрдореНрдкреИрдХреНрдЯ ред рд▓реЗрдХрд┐рди рдЪреВрдВрдХрд┐ рдпрд╣ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдбрдореА рдХрдХреНрд╖рд╛рдУрдВ рдХреЛ рд╕реНрдерд╛рдирд╛рдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣ рдХреИрд╕рд╛ рджрд┐рдЦреЗрдЧрд╛:
 //     ScannerFeatureDependencies public class ScannerFeatureDependenciesFake implements ScannerFeatureDependencies { @Override public DbClientApi dbClient() { return new DbClientFake(); } @Override public HttpClientApi httpClient() { return new HttpClientFake(); } @Override public SomeUtils someUtils() { return CoreUtilsComponent.get().someUtils(); } @Override public PurchaseInteractor purchaseInteractor() { return new PurchaseInteractorFake(); } } //  -  Application-   public class ScannerExampleApplication extends Application { @Override public void onCreate() { super.onCreate(); ScannerFeatureComponent.initAndGet( // ,     =) new ScannerFeatureDependenciesFake() ); } } 

рдФрд░ рд╕реНрдХреИрдирд░ рд╕реБрд╡рд┐рдзрд╛ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╣реА рдкреНрд░рдХрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓реЙрдиреНрдЪ рдХреА рдЧрдИ рд╣реИ, рддрд╛рдХрд┐ рдЕрддрд┐рд░рд┐рдХреНрдд рдЦрд╛рд▓реА рдЧрддрд┐рд╡рд┐рдзрд┐ рдХреЛ рдЕрд╡рд░реБрджреНрдз рди рдХрд░реЗрдВ:
 <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.scanner_example"> <application android:name=".ScannerExampleApplication" android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/AppTheme"> <!--   --> <activity android:name="com.example.scanner.presentation.view.ScannerActivity"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> </application> </manifest> 


рдореЛрдиреЛрдореЙрдбреНрдпреВрд▓рд░рд┐рдЯреА рд╕реЗ рдорд▓реНрдЯреАрдореЙрдбреНрдпреВрд▓рд░рд┐рдЯреА рдореЗрдВ рд╕рдВрдХреНрд░рдордг рдХрд╛ рдПрд▓реНрдЧреЛрд░рд┐рджрдо


рдЬреАрд╡рди рдПрдХ рдХрдареЛрд░ рдЪреАрдЬ рд╣реИред рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХрддрд╛ рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рд╕рднреА рд▓рд┐рдЧреЗрд╕реА рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВред рдЕрдЧрд░ рдХреЛрдИ рдЕрдм рдПрдХ рдирдпрд╛ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рджреЗрдЦ рд░рд╣рд╛ рд╣реИ, рдЬрд╣рд╛рдВ рдЖрдк рддреБрд░рдВрдд рд╕рдм рдХреБрдЫ рдЖрд╢реАрд░реНрд╡рд╛рдж рджреЗ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдкрд╕реЗ рдИрд░реНрд╖реНрдпрд╛ рдХрд░рддрд╛ рд╣реВрдВ, рднрд╛рдИред рд▓реЗрдХрд┐рди рдореЗрд░реЗ рд╕рд╛рде рдРрд╕рд╛ рдирд╣реАрдВ рд╣реИ, рдФрд░ рд╡рд╣ рдЖрджрдореА рднреА рдЧрд▓рдд рд╣реИ =)ред

рдорд▓реНрдЯреА-рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЕрдкрдиреЗ рдЖрд╡реЗрджрди рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХреИрд╕реЗ рдХрд░реЗрдВ? рдореИрдВрдиреЗ рдЬреНрдпрд╛рджрд╛рддрд░ рджреЛ рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реБрдирд╛ред
рдкрд╣рд▓реЗ рд╡рд╛рд▓рд╛ред рдпрд╣рд╛рдБ рдФрд░ рдЕрднреА рдЖрд╡реЗрджрди рд╡рд┐рднрд╛рдЬрдиред рд╕рдЪ рд╣реИ, рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдПрдХ рдпрд╛ рджреЛ рдорд╣реАрдиреЗ рдХреЗ рд▓рд┐рдП рдЗрдХрдЯреНрдареА рдирд╣реАрдВ рд╣реЛ рд╕рдХрддреА рд╣реИ)ред
рджреВрд╕рд░рд╛ рд╡рд╛рд▓рд╛ред рдзреАрд░реЗ-рдзреАрд░реЗ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рдЦреАрдВрдЪрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВред рд▓реЗрдХрд┐рди рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдЗрди рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рднреА рдкреНрд░рдХрд╛рд░ рдЦрд┐рдВрдЪрд╛рд╡ред рдФрд░ рдпрд╣реАрдВ рд╕реЗ рдорд╕реНрддреА рд╢реБрд░реВ рд╣реЛрддреА рд╣реИред рдирд┐рд░реНрднрд░рддрд╛ рдХреЛрдб рдПрдХ рдФрд░ рдХреЛрдб рдХреЛ рдЦреАрдВрдЪ рд╕рдХрддрд╛ рд╣реИ, рдкреВрд░реА рдЪреАрдЬ рдХреЛрд░ рдореЙрдбреНрдпреВрд▓ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рд╕рд╛рдорд╛рдиреНрдп рдореЙрдбреНрдпреВрд▓ рдХреА рдУрд░ рдкрд▓рд╛рдпрди рдХрд░рддреА рд╣реИ, рдФрд░ рдЗрд╕реА рддрд░рд╣ред рдирддреАрдЬрддрди, рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рдХреЛ рдЦреАрдВрдЪрдирд╛ рдЖрд╡реЗрджрди рдХреЗ рдПрдХ рдФрд░ рдЕрдЪреНрдЫреЗ рдЖрдзреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдФрд░ рдлрд┐рд░, рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдЖрдкрдХреА рдкрд░рд┐рдпреЛрдЬрдирд╛ рд╕рдордп рдХреА рдПрдХ рдЕрдЪреНрдЫреА рдЕрд╡рдзрд┐ рдХреЛ рдЗрдХрдЯреНрдард╛ рдирд╣реАрдВ рдХрд░реЗрдЧреАред

рдореИрдВ рдмрд╣реБ-рдореЙрдбреНрдпреВрд▓рд░рддрд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡реЗрджрди рдХреЗ рдХреНрд░рдорд┐рдХ рд╣рд╕реНрддрд╛рдВрддрд░рдг рдХреА рд╡рдХрд╛рд▓рдд рдХрд░рддрд╛ рд╣реВрдВ, рд╕рдорд╛рдирд╛рдВрддрд░ рдореЗрдВ рд╣рдореЗрдВ рдЕрднреА рднреА рдирдИ рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдореБрдЦреНрдп рд╡рд┐рдЪрд╛рд░ рдпрд╣ рд╣реИ рдХрд┐ рдпрджрд┐ рдЖрдкрдХреЗ рдореЙрдбреНрдпреВрд▓ рдХреЛ рдХреБрдЫ рдирд┐рд░реНрднрд░рддрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рдЖрдкрдХреЛ рдЗрд╕ рдХреЛрдб рдХреЛ рддреБрд░рдВрдд рднреМрддрд┐рдХ рд░реВрдк рд╕реЗ рднреА рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдирд╣реАрдВ рдЦреАрдВрдЪрдирд╛ рдЪрд╛рд╣рд┐рдП ред рдЖрдЗрдП рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рд╕реНрдХреИрдирд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдореЙрдбреНрдпреВрд▓ рд╣рдЯрд╛рдиреЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рджреЗрдЦреЗрдВ:

  • рдПрдкреАрдЖрдИ рдлреАрдЪрд░реНрд╕ рдмрдирд╛рдПрдВ, рдЗрд╕реЗ рдирдП рдПрдкреАрдЖрдИ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдбрд╛рд▓реЗрдВред рдпрд╛рдиреА, рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдПрдХ рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП : рд╕рднреА рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рде рдлрд╝реАрдЪрд░-рд╕реНрдХреИрдирд░-рдПрдкреА ред
  • рдмрдирд╛рдПрдБ : рд╕реБрд╡рд┐рдзрд╛-рд╕реНрдХреИрдирд░-рдкреНрд░рддреНрдпрд╛рд░реЛрдкрдг ред рдлрд╝реАрдЪрд░ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╕рднреА рдХреЛрдб рдХреЛ рднреМрддрд┐рдХ рд░реВрдк рд╕реЗ рдЗрд╕ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░реЗрдВред рд╡рд╣ рд╕рдм рдХреБрдЫ рдЬреЛ рдЖрдкрдХреА рд╕реБрд╡рд┐рдзрд╛ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рд╕реНрдЯреВрдбрд┐рдпреЛ рддреБрд░рдВрдд рдЙрдЬрд╛рдЧрд░ рдХрд░реЗрдЧрд╛ред
  • рдмрд╛рд╣рд░реА рд╕реБрд╡рд┐рдзрд╛рдУрдВ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдкрд╣рдЪрд╛рдиреЗрдВред рдЙрдЪрд┐рдд рдЗрдВрдЯрд░рдлреЗрд╕ рдмрдирд╛рдПрдБред рдпреЗ рдЗрдВрдЯрд░рдлреЗрд╕ рддрд╛рд░реНрдХрд┐рдХ рдПрдкреА-рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реИрдВред рдпрд╣реА рд╣реИ, рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореЙрдбреНрдпреВрд▓ рдмрдирд╛рдПрдВ : рдХреЛрд░-рдмрд░реНрддрди ,: рдХреЛрд░-рдиреЗрдЯрд╡рд░реНрдХ-рдПрдкреА ,: рдХреЛрд░-рдбреАрдмреА-рдПрдкреА ,: рд╕реБрд╡рд┐рдзрд╛-рдЦрд░реАрдж-рдПрдлреА рдЗрд╕реА рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ рд╕рд╛рдеред
    рдореИрдВ рдЖрдкрдХреЛ рдореЙрдбреНрдпреВрд▓ рдХреЗ рдирд╛рдо рдФрд░ рдЕрд░реНрде рдореЗрдВ рддреБрд░рдВрдд рдирд┐рд╡реЗрд╢ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ рдХрд┐ рд╕рдордп рдХреЗ рд╕рд╛рде, рдЗрдВрдЯрд░рдлреЗрд╕ рдФрд░ рдореЙрдбреНрдпреВрд▓ рдереЛрдбрд╝рд╛ рдлреЗрд░рдмрджрд▓, рдврд╣ рд╕рдХрддреЗ рд╣реИрдВ, рдЖрджрд┐, рдпрд╣ рд╕рд╛рдорд╛рдиреНрдп рд╣реИред
  • рдмрд╛рд╣рд░реА рдирд┐рд░реНрднрд░рддрд╛ ( ScannerFeatureD dependencies ) рдХреА рдПрдкреАрдЖрдИ рдмрдирд╛рдПрдБред рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ : рдлрд╝реАрдЪрд░-рд╕реНрдХреИрдирд░-рдЗрдВрдкреНрд▓рд╛рдВрдЯ рд░рдЬрд┐рд╕реНрдЯрд░ рдирдП рдмрдирд╛рдП рдЧрдП рдПрдкреА-рдореЙрдбреНрдпреВрд▓ред
  • рдЪреВрдВрдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдРрдк рдореЗрдВ рд╕рднреА рд╡рд┐рд░рд╛рд╕рдд рд╣реИрдВ, рдпрд╣рд╛рдВ рд╣рдо рдХреНрдпрд╛ рдХрд░рддреЗ рд╣реИрдВред рдРрдк рдореЗрдВ, рд╣рдо рдлрд╝реАрдЪрд░ рдХреЗ рд▓рд┐рдП рдмрдирд╛рдП рдЧрдП рд╕рднреА рдореЙрдбреНрдпреВрд▓ (рдлрд╝реАрдЪрд░ рдПрдкреАрдЖрдИ рдореЙрдбреНрдпреВрд▓, рдлрд╝реАрдЪрд░ рдЗрдореНрдкрд╛рдЙрдВрдб рдореЙрдбреНрдпреВрд▓, рдлрд╝реАрдЪрд░ рдПрдХреНрд╕рдЯрд░реНрдирд▓ рдбрд┐рдкреЗрдВрдбреЗрдВрд╕реА рдПрдкреА рдореЙрдбреНрдпреВрд▓) рдХреЛ рдХрдиреЗрдХреНрдЯ рдХрд░рддреЗ рд╣реИрдВред
    рд╕реБрдкрд░ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд┐рдВрджреБ ред рдЕрдЧрд▓рд╛, рдРрдк рдореЗрдВ, рд╣рдо рд╕рднреА рдЖрд╡рд╢реНрдпрдХ рд╕реБрд╡рд┐рдзрд╛ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЯрд░рдлреЗрд╕ (рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рд╕реНрдХреИрдирд░) рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдмрдирд╛рддреЗ рд╣реИрдВред рдпреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╕рдВрднрд╡рддрдГ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЗрди рдЖрд╢реНрд░рд┐рддреЛрдВ рдХреЗ рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЗ рдПрдкреАрдЖрдИ рдирд┐рд░реНрднрд░рддрд╛ рд╕реЗ рдмрд╕ рдкреНрд░реЙрдХреНрд╕реА рд╣реЛрдВрдЧреЗред рдПрдХ рд╕реБрд╡рд┐рдзрд╛ рдШрдЯрдХ рдХреЛ рдЗрдирд┐рд╢рд┐рдпрд▓рд╛рдЗрдЬрд╝ рдХрд░рддреЗ рд╕рдордп, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдбреЗрдЯрд╛ рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ
    рд╢рдмреНрджреЛрдВ рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓, рдПрдХ рдЙрджрд╛рд╣рд░рдг рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рддреЛ рд╡рд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╣реИ! рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдлреАрдЪрд░-рд╕реНрдХреИрдирд░-рдЙрджрд╛рд╣рд░рдг рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдХреБрдЫ рд╕рдорд╛рди рд╣реИред рдПрдХ рдмрд╛рд░ рдлрд┐рд░, рдореИрдВ рдЗрд╕реЗ рдереЛрдбрд╝рд╛ рдЕрдиреБрдХреВрд▓рд┐рдд рдХреЛрдб рджреВрдВрдЧрд╛:
     //     ScannerFeatureDependencies  app- public class ScannerFeatureDependenciesLegacy implements ScannerFeatureDependencies { @Override public DbClientApi dbClient() { return new DbClientLegacy(); } @Override public HttpClientApi httpClient() { // -  // ,      return NetworkFabric.createHttpClientLegacy(); } @Override public SomeUtils someUtils() { return new SomeUtils(); } @Override public PurchaseInteractor purchaseInteractor() { return new PurchaseInteractorLegacy(); } } //  -   ScannerFeatureComponent.initAndGet( new ScannerFeatureDependenciesLegacy() ); 

    рдпрд╣реА рд╣реИ, рдпрд╣рд╛рдВ рдореБрдЦреНрдп рд╕рдВрджреЗрд╢ рдпрд╣ рд╣реИред рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдмрд╛рд╣рд░реА рдХреЛрдб рдРрдк рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдЙрд╕рдиреЗ рдХрд┐рдпрд╛ред рдФрд░ рдлреАрдЪрд░ рдЦреБрдж рд╣реА рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд╕рд╛рдорд╛рдиреНрдп рддрд░реАрдХреЗ рд╕реЗ рдПрдкреА (рдорддрд▓рдм рдПрдкрд┐ рдирд┐рд░реНрднрд░рд┐рдпреЛрдВ рдФрд░ рдПрдкрд┐-рдореЙрдбреНрдпреВрд▓реНрд╕) рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░реЗрдЧрд╛ред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдзреАрд░реЗ-рдзреАрд░реЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рд╣реЛ рдЬрд╛рдПрдЧрд╛ред рд▓реЗрдХрд┐рди рддрдм рд╣рдо рдПрдХ рдЕрдВрддрд╣реАрди рдЦреЗрд▓ рдХреЛ рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдЦреАрдВрдЪрдХрд░ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдмрд╛рд╣рд░реА рдХреЛрдб рд╕реЗ рдмрдЪреЗрдВрдЧреЗред рд╣рдо рд╕реНрдкрд╖реНрдЯ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐рдпреЛрдВ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ!
  • рд▓рд╛рдн

рдпрд╣рд╛рдБ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд░рд▓ рд▓реЗрдХрд┐рди рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓рд╛ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╣реИ рдЬреЛ рдЖрдкрдХреЛ рдЕрдкрдиреЗ рд▓рдХреНрд╖реНрдп рдХреА рдУрд░ рдХрджрдо рдмрдврд╝рд╛рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред

рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реБрдЭрд╛рд╡


рдХрд┐рддрдиреА рдмрдбрд╝реА / рдЫреЛрдЯреА рд╕реБрд╡рд┐рдзрд╛рдПрдБ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП?
рдпрд╣ рд╕рдм рдкрд░рд┐рдпреЛрдЬрдирд╛ рдЖрджрд┐ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдмрд╣реБ-рдкреНрд░рддрд┐рд░реВрдкрддрд╛ рдХреЗ рд▓рд┐рдП рд╕рдВрдХреНрд░рдордг рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдореИрдВ рдЖрдкрдХреЛ рдмрдбрд╝реЗ рдЯреБрдХрдбрд╝реЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВред рдЖрдЧреЗ, рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рддреЛ рдЖрдк рдЗрди рдореЙрдбреНрдпреВрд▓ рд╕реЗ рдЕрдзрд┐рдХ рдореЙрдбреНрдпреВрд▓ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВрдЧреЗред рд▓реЗрдХрд┐рди рдкреАрд╕рдирд╛ рдирд╣реАрдВ рд╣реИред : / = .

app-
app , . , , - , , . , app , , , . app , , api- impl- , app .
:adapter , api impl, app api. , . clean_app . , Moxy, MoxyReflector, , - :stub-moxy-java . , .
. , . , app , , .


. , , , , DI.
, , (Mobius 2018 Piter, ).
Gradle. api implementation gradle . , .
, , ! !

Source: https://habr.com/ru/post/hi422555/


All Articles