рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдореВрд▓ рдмрд╛рддреЗрдВ

рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдореВрд▓ рдмрд╛рддреЗрдВ


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


рдирд╢рд╛ рдХреНрдпрд╛ рд╣реИ?


рдЖрдЗрдП рдкрд╣рд▓реЗ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреЗрдЦреЗрдВред рд╣рдо рдиреАрдЪреЗ рджрд┐рдЦрд╛рдП рдЧрдП рдЕрдиреБрд╕рд╛рд░ ClassC , ClassB рдФрд░ ClassC рд╣реИрдВ:


 class ClassA { var classB: ClassB } class ClassB { var classC: ClassC } class ClassC { } 

рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрд▓рд╛рд╕ рдХреНрд▓рд╛рд╕ рдореЗрдВ ClassB рдХреНрд▓рд╛рд╕ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХреНрд▓рд╛рд╕ рдХреНрд▓рд╛рд╕ рдХреНрд▓рд╛рд╕ рдХреНрд▓рд╛рд╕ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИред рдХреНрдпреЛрдВ? рдХреНрдпреЛрдВрдХрд┐ ClassB рдХреЛ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП ClassB рдЖрд╡рд╢реНрдпрдХрддрд╛ ClassB рд╣реИред рд╣рдо рдпрд╣ рднреА рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ ClassB рдХреНрд▓рд╛рд╕ рдХреНрд▓рд╛рд╕ рдХреНрд▓рд╛рд╕ рдХреА рдирд┐рд░реНрднрд░рддрд╛ рд╣реИред


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


рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рдХреИрд╕реЗ рдХрд╛рдо рдХрд░реЗрдВ?


рдЖрдЗрдП рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рддреАрди рддрд░реАрдХреЛрдВ рдХреЛ рджреЗрдЦреЗрдВ:


рдкрд╣рд▓рд╛ рддрд░реАрдХрд╛: рдПрдХ рдЖрд╢реНрд░рд┐рдд рд╡рд░реНрдЧ рдореЗрдВ рдирд┐рд░реНрднрд░рддрд╛ рдкреИрджрд╛ рдХрд░реЗрдВ


рд╕реАрдзреЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ рдХрд╣реЗрдВ рддреЛ рд╣рдо рдЬрдм рднреА рдЬрд░реВрд░рдд рд╣реЛ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВред рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:


 class ClassA { var classB: ClassB fun someMethodOrConstructor() { classB = ClassB() classB.doSomething() } } 

рдпрд╣ рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реИ! рд╣рдо рдПрдХ рд╡рд░реНрдЧ рдмрдирд╛рддреЗ рд╣реИрдВ рдЬрдм рд╣рдореЗрдВ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред


рд▓рд╛рдн


  • рдпрд╣ рдЖрд╕рд╛рди рдФрд░ рд╕рд░рд▓ рд╣реИред
  • рдЖрд╢реНрд░рд┐рдд рд╡рд░реНрдЧ (рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ ClassA ) рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдирд┐рдпрдВрддреНрд░рдг рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдирд┐рд░реНрднрд░рддрд╛ рдХреИрд╕реЗ рдФрд░ рдХрдм рдмрдирд╛рдИ рдЬрд╛рдПред

рдХрдорд┐рдпреЛрдВ


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

рдкреНрд░рддреНрдпреЗрдХ рд╡рд░реНрдЧ рдХреЛ рдХреЗрд╡рд▓ рдЕрдкрдирд╛ рдХрд╛рдо рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред

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


рджреВрд╕рд░рд╛ рддрд░реАрдХрд╛: рдПрдХ рдХрд╕реНрдЯрдо рд╡рд░реНрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдЗрдВрдЬреЗрдХреНрдЯ рдХрд░реЗрдВ


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


рдиреАрдЪреЗ рджрд┐рдП рдЧрдП рдирдореВрдирд╛ рдХреЛрдб рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВ:


 class ClassA { var classB: ClassB constructor(classB: ClassB){ this.classB = classB } } class ClassB { var classC: ClassC constructor(classC: ClassC){ this.classC = classC } } class ClassC { constructor(){ } } class UserClass(){ fun doSomething(){ val classC = ClassC(); val classB = ClassB(classC); val classA = ClassA(classB); classA.someMethod(); } } view rawDI Example In Medium - 

рдЕрдм ClassA рдХреЛ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЗ рдЕрдВрджрд░ рд╕рднреА рдирд┐рд░реНрднрд░рддрд╛рдПрдВ рдорд┐рд▓рддреА рд╣реИрдВ рдФрд░ рдмрд╕ ClassB рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдмрд┐рдирд╛ рдХреБрдЫ ClassB рдХреЙрд▓ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред


рд▓рд╛рдн


  • ClassB рдФрд░ ClassB рдЕрдм рд╢рд┐рдерд┐рд▓ рдпреБрдЧреНрдорд┐рдд рд╣реИрдВ, рдФрд░ рд╣рдо ClassB рдХреЗ рдЕрдВрджрд░ рдХреЛрдб рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рдмрд┐рдирд╛ ClassB рдХреЛ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, ClassB рдкрд╛рд╕ рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп ClassB рд╣рдо AssumeClassB рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬреЛ ClassB рдЙрдкрд╡рд░реНрдЧ рд╣реИ, рдФрд░ рд╣рдорд╛рд░рд╛ рдкреНрд░реЛрдЧреНрд░рд╛рдо рдареАрдХ рд╕реЗ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
  • рдЕрдм ClassA рдкрд░реАрдХреНрд╖рдг рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдпреВрдирд┐рдЯ рдЯреЗрд╕реНрдЯ рд▓рд┐рдЦрддреЗ рд╕рдордп, рд╣рдо ClassB (рдЯреЗрд╕реНрдЯ рдСрдмреНрдЬреЗрдХреНрдЯ) рдХрд╛ рдЕрдкрдирд╛ рд╕рдВрд╕реНрдХрд░рдг рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ ClassB рдкрд╛рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрджрд┐ рдкрд░реАрдХреНрд╖рд╛ рдкрд╛рд╕ рдХрд░рддреЗ рд╕рдордп рдХреЛрдИ рддреНрд░реБрдЯрд┐ рд╣реЛрддреА рд╣реИ, рддреЛ рдЕрдм рд╣рдо рдпрд╣ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ ClassA рдореЗрдВ рдПрдХ рддреНрд░реБрдЯрд┐ рд╣реИред
  • ClassB рдирд┐рд░реНрднрд░рддрд╛ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рдореБрдХреНрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдХрд╛рд░реНрдпреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдХрдорд┐рдпреЛрдВ


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

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


рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреНрдпрд╛ рд╣реИ?


рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдЖрд╢реНрд░рд┐рдд рд╡рд░реНрдЧ рдХреЗ рдмрд╛рд╣рд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рдПрдХ рддрд░реАрдХрд╛ рд╣реИ рдЬрдм рдЖрд╢реНрд░рд┐рдд рд╡рд░реНрдЧ рдХреЛ рдХреБрдЫ рднреА рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред

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


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


рдХреИрд╕реЗ рдХрд░реЗрдВ рдмреЗрд╣рддрд░? рдЖрдЗрдП рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХрд╛ рддреАрд╕рд░рд╛ рддрд░реАрдХрд╛ рджреЗрдЦреЗрдВред


рддреАрд╕рд░рд╛ рддрд░реАрдХрд╛: рд╣рдорд╛рд░реЗ рдмрдЬрд╛рдп рдХрд┐рд╕реА рдФрд░ рдкрд░ рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рджреЗрдВ


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


рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдХреЗ "рд╕реНрд╡рдЪреНрдЫ" рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди (рдореЗрд░реА рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░рд╛рдп рдореЗрдВ)

рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рд╕рдВрднрд╛рд▓рдиреЗ рдХреА рдЬрд┐рдореНрдореЗрджрд╛рд░реА рдПрдХ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдкрд╛рд╕ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЖрд╡реЗрджрди рдХрд╛ рдХреЛрдИ рднреА рд╣рд┐рд╕реНрд╕рд╛ рдЙрдирдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ред

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


рдХрд┐рд╕реА рднреА рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдврд╛рдВрдЪреЗ рдореЗрдВ рджреЛ рдирд┐рд╣рд┐рдд рд╡рд┐рд╢реЗрд╖рддрд╛рдПрдВ рд╣реИрдВред рдЕрдиреНрдп рдЕрддрд┐рд░рд┐рдХреНрдд рдХрд╛рд░реНрдп рдЖрдкрдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпреЗ рджреЛ рдХрд╛рд░реНрдп рд╣рдореЗрд╢рд╛ рдореМрдЬреВрдж рд░рд╣реЗрдВрдЧреЗ:


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


 class ClassA { var classB: ClassB @Inject constructor(classB: ClassB){ this.classB = classB } } class ClassB { var classC: ClassC @Inject constructor(classC: ClassC){ this.classC = classC } } class ClassC { @Inject constructor(){ } } 

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


 class OurThirdPartyGuy { fun provideClassC(){ return ClassC() //just creating an instance of the object and return it. } fun provideClassB(classC: ClassC){ return ClassB(classC) } fun provideClassA(classB: ClassB){ return ClassA(classB) } } 

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


рд▓рд╛рдн


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

 fun provideClassC(){ return AssumeClassC() } 

рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдЕрдВрджрд░ рдХреЛрдИ рдХреЛрдб рдирд╣реАрдВ рдмрджрд▓рддрд╛ рд╣реИ, рдХреЗрд╡рд▓ рдкреНрд░рджрд╛рддрд╛ рд╡рд┐рдзрд┐ред рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдХреБрдЫ рднреА рд╕рд░рд▓ рдФрд░ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред


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

рдХрдорд┐рдпреЛрдВ


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

рдирд┐рд╖реНрдХрд░реНрд╖


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

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

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


All Articles