IoC, DI, IoC рдХрдВрдЯреЗрдирд░ - рдмрд╕ рд╕рд░рд▓ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдм рдЖрдИрдУрд╕реА, рдбреАрдЖрдИ, рдЖрдИрдУрд╕реА-рдХрдВрдЯреЗрдирд░ рд╢рдмреНрдж рдХрдо рд╕реЗ рдХрдо рдХрдИ рдХреА рд╕реБрдирд╡рд╛рдИ рдореЗрдВ рд╣реИрдВред рдХреБрдЫ рд╕рдХреНрд░рд┐рдп рд░реВрдк рд╕реЗ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдЬрдмрдХрд┐ рдЕрдиреНрдп рдпрд╣ рд╕рдордЭрдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдХрд┐рд╕ рддрд░рд╣ рдХрд╛ рдлреИрд╢рди рдЯреНрд░реЗрдВрдб рд╣реИред

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

рд╕рд┐рджреНрдзрд╛рдВрдд


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

рдЕрднреНрдпрд╛рд╕


рдкреНрд░рдмрдВрдзрди рдЙрд▓рдЯрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдЕрдиреБрд╕рд╛рд░, рдпрджрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдЧреНрд░рд╛рд╣рдХ рд╣реИ рдЬреЛ рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд╕реЗрд╡рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдЙрд╕реЗ рд╕реАрдзреЗ рдРрд╕рд╛ рдирд╣реАрдВ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдХрд┐рди рдПрдХ рдордзреНрдпрд╕реНрде рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ, рдПрдХ рдкреНрд░рдХрд╛рд░ рдХреА рдЖрдЙрдЯрд╕реЛрд░реНрд╕рд┐рдВрдЧред
рдЧреНрд░рд╛рд╣рдХ-рд╕реЗрд╡рд╛ рд╕рд╣рднрд╛рдЧрд┐рддрд╛ рдХреА рдпреЛрдЬрдирд╛
рдпрд╣ рддрдХрдиреАрдХреА рд░реВрдк рд╕реЗ рдХреИрд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ рдФрд░ рдЖрдИрдУрд╕реА рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдЧрд╛ред
рд╣рдо рдПрдХ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд╕рд╛рде DI рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ:
рдХрд╣рддреЗ рд╣реИрдВ рдХрд┐ рдПрдХ рд╡рд░реНрдЧ рд╣реИ рдЬреЛ рдПрдХ рд╢реЗрдбреНрдпреВрд▓ рдмрдирд╛рддрд╛ рд╣реИ, рдФрд░ рдПрдХ рдЕрдиреНрдп рд╡рд░реНрдЧ рдЗрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ (рдЖрдорддреМрд░ рдкрд░ рдЙрдирдореЗрдВ рд╕реЗ рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╣реИрдВ, рдПрдХ рдбреЗрд╕реНрдХрдЯреЙрдк рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рд▓рд┐рдП рдХрд╣реЗрдВ, рджреВрд╕рд░рд╛ рд╡реЗрдм рдХреЗ рд▓рд┐рдП, рдЖрджрд┐)ред
рдЕрдЧрд░ рд╣рдореЗрдВ IoC, DI рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рддреЛ рд╣рдо рдХреБрдЫ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд▓рд┐рдЦреЗрдВрдЧреЗ:
class ScheduleManager { public Schedule GetSchedule() { // Do Something by init schedule... } } class ScheduleViewer { private ScheduleManager _scheduleManager = new ScheduleManager(); public void RenderSchedule() { _scheduleManager.GetSchedule(); // Do Something by render schedule... } } 

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

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рд╕реНрдЯреАрд▓ рдереНрд░реЗрдбреНрд╕ рдХреА рдЗрд╕ рдЙрд▓рдЭрди рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди (DI) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗ - рд╣рдо IScheduleManager рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рд░реВрдк рдореЗрдВ рдПрдХ рдкрд░рдд рдЬреЛрдбрд╝рдХрд░ рдЗрди рд╡рд░реНрдЧреЛрдВ рдХреЗ рдмреАрдЪ рд╕рдВрдмрдВрдз рдХреЛ рдХрдордЬреЛрд░ рдмрдирд╛ рджреЗрдВрдЧреЗред рдФрд░ рд╣рдо рдЗрд╕реЗ рдбреАрдЖрдИ рддрдХрдиреАрдХ рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рд╕рд╛рде рд╣рд▓ рдХрд░реЗрдВрдЧреЗ, рдЕрд░реНрдерд╛рддреН рдХрдиреНрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдЗрдВрдЬреЗрдХреНрд╢рди (рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╕реЗрдЯрд░ рдЗрдВрдЬреЗрдХреНрд╢рди рдФрд░ рд╡рд┐рдзрд┐ рдЗрдВрдЬреЗрдХреНрд╢рди рд╣реИ - рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рддреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд░реНрдЧ рдХреЗ рдмрдЬрд╛рдп рд╣рд░ рдЬрдЧрд╣ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рдВрдкрддреНрддрд┐ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рдпрд╛ рд╡рд┐рдзрд┐ рддрд░реНрдХ рдкреНрд░рдХрд╛рд░ рдореЗрдВ):
 interface IScheduleManager { Schedule GetSchedule(); } class ScheduleManager : IScheduleManager { public Schedule GetSchedule() { // Do Something by init schedule... } } class ScheduleViewer { private IScheduleManager _scheduleManager; public ScheduleViewer(IScheduleManager scheduleManager) { _scheduleManager = scheduleManager; } public void RenderSchedule() { _scheduleManager.GetSchedule(); // Do Something by render schedule... } } 

рдФрд░ рдлрд┐рд░ рдЬрд╣рд╛рдВ рд╣рдо рдЕрдиреБрд╕реВрдЪреА рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдкрдиреА рдХрдХреНрд╖рд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╣рдо рд▓рд┐рдЦрддреЗ рд╣реИрдВ:
 ScheduleViewer scheduleViewer = new ScheduleViewer(new ScheduleManager()); 

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

рдЖрдИрдУрд╕реА рдХрдВрдЯреЗрдирд░


рд╡реЗ рджрд┐рдирдЪрд░реНрдпрд╛ рдХреА рдорд╛рддреНрд░рд╛ рдХреЛ рдХрдо рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рд╕реЗ рдЖрдк рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдФрд░ рдЗрд╕рдХреЗ рд╡рд┐рд╢рд┐рд╖реНрдЯ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдмреАрдЪ рдкрддреНрд░рд╛рдЪрд╛рд░ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддрд╛рдХрд┐ рдЖрдк рдЗрд╕реЗ рдмрд╛рдж рдореЗрдВ рд╣рд░ рдЬрдЧрд╣ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВред
рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рдКрдкрд░ рдХрд╣рд╛ рдерд╛, рд╣рдо рдЗрд╕ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред
1. рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╣рдо рдПрдХ рдХрдВрдЯреЗрдирд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдмрдирд╛рддреЗ рд╣реИрдВ:
 class SimpleConfigModule : NinjectModule { public override void Load() { Bind<IScheduleManager>().To<ScheduleManager>(); //   ,     : // ..     Bind<ScheduleViewer>().ToSelf(); } } 

рдЕрдм рдЬрд╣рд╛рдБ рднреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, IScheduleManager рдХреЛ ScheduleManager рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
2. рдХрдиреНрдЯреЗрдирд░ рд╕реНрд╡рдпрдВ рдмрдирд╛рдПрдВ, рдЗрд╕рдХреЗ рд╡рд┐рдиреНрдпрд╛рд╕рдХрд░реНрддрд╛ рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИ:
 IKernel ninjectKernel = new StandardKernel(new SimpleConfigModule()); //      ScheduleViewer   new,  : ScheduleViewer scheduleViewer= ninjectKernel.Get<ScheduleViewer>(); 

рдХрдВрдЯреЗрдирд░ рдЦреБрдж рд╣реА рд╢реЗрдбреНрдпреВрд▓ рдореИрдирдЬрд░ рдХреНрд▓рд╛рд╕ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рддрд╛ рд╣реИ, рд╢реЗрдбреНрдпреВрд▓рд╡реНрдпреВрдЕрд░ рдХрдВрд╕реНрдЯреНрд░рдХреНрдЯрд░ рдХреЛ рдХреЙрд▓ рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдореЗрдВ рд╢реЗрдбреНрдпреВрд▓рдореИрдиреЗрдЬрд░ рдХрд╛ рдПрдХ рдирдпрд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдЙрджрд╛рд╣рд░рдг рджреЗрддрд╛ рд╣реИред

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


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

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


All Articles