рдбреЗрдЯрд╛ рдкреНрд░рд╕рдВрдЧ рдЗрдВрдЯрд░реИрдХреНрд╢рди (рдбреАрд╕реАрдЖрдИ) - рдПрдХ рд╡рд╕реНрддреБ-рдЙрдиреНрдореБрдЦ рдкреНрд░рддрд┐рдорд╛рди рдХрд╛ рд╡рд┐рдХрд╛рд╕

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

рдК рд▓рд╛рдн


рдЖрдЗрдП рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рдХрд░реЗрдВ рдЬрд╣рд╛рдВ рдкрд╛рд░рдВрдкрд░рд┐рдХ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдиреЗ рдЗрд╕рдХреЗ рд▓рд╛рдпрдХ рд╕рд╛рдмрд┐рдд рдХрд┐рдпрд╛ рд╣реИред

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

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

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

OO рдиреБрдХрд╕рд╛рди


OO рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЗ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдореЗрдВ рд╣рд╛рд░ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рджрд┐рдЦрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐ рдореЗрд░рд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИ, рдЖрдЗрдП рдПрдХ рд╣реА рд╕рдореВрд╣ рдХреЗ рджреЛ рд╕рд┐рд╕реНрдЯрдо рдСрдкрд░реЗрд╢рди (рджреЛ рдЙрдкрдпреЛрдЧ рдкрд░рд┐рджреГрд╢реНрдп) рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ рдЬреЛ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рдмрд╛рддрдЪреАрдд рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧ рдХрд╛ рдорд╛рдорд▓рд╛


рдЪрд┐рддреНрд░ рдЪрд╛рд░ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕рдВрдЪрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдкреНрд░рдгрд╛рд▓реА рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рджрд░реНрд╢рд╛рддрд╛ рд╣реИред

рджреВрд╕рд░рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛


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

рдХреЛрдб рд╕рд┐рд╕реНрдЯрдо рд╕рдВрдЪрд╛рд▓рди рдкреНрд░рджрд░реНрд╢рд┐рдд рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рд╣рдордиреЗ Use Case 1 рдФрд░ Use Case 2 рдореЗрдВ рд╡реНрдпрдХреНрдд рдХрд┐рдП рдЧрдП рджреЛ рд╕рд┐рд╕реНрдЯрдо рдСрдкрд░реЗрд╢рди рджреЗрдЦреЗред рд╣рдо рдЙрдиреНрд╣реЗрдВ рдХреЛрдб рдореЗрдВ рдХреИрд╕реЗ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддреЗ рд╣реИрдВ? рдЖрджрд░реНрд╢ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореИрдВ рдПрдХ рдлрд╝рд╛рдЗрд▓ рдЦреЛрд▓рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдФрд░ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЗрдВрдЯрд░реИрдХреНрд╢рди рдХреЗ рдореЙрдбрд▓ рдХреЛ рд╕рдордЭрдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ред рдЕрдЧрд░ рдореИрдВ Use Case 1 рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣рд╛ рд╣реВрдВ, рддреЛ рдореИрдВ Use Case 2 рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдирд╣реАрдВ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддрд╛ред рдЗрд╕реЗ рдореИрдВ рдХреЛрдб рдореЗрдВ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЛрдВ рдХрд╛ рдПрдХ рд╕рдлрд▓ рдкреНрд░рджрд░реНрд╢рди рдорд╛рдирддрд╛ рд╣реВрдВред

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

рд╕реНрд░реЛрдд рдХреЛрдб! = рд░рдирдЯрд╛рдЗрдо


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


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

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

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

рдмрдЪрд╛рд╡ рдХреЗ рд▓рд┐рдП рдбреАрд╕реАрдЖрдИ!


DCI (рдбреЗрдЯрд╛, рд╕рдВрджрд░реНрдн, рдЗрдВрдЯрд░реИрдХреНрд╢рди) рдЗрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП Trygve Reenskaug (MVC рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд▓реЗрдЦрдХ) рджреНрд╡рд╛рд░рд╛ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рдПрдХ рдкреНрд░рддрд┐рдорд╛рди рд╣реИред

рдкрд╣рд▓рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ (DCI)

рдЖрдЗрдП рдбреАрд╕реАрдЖрдИ рд╢реИрд▓реА рдореЗрдВ рд╡реНрдпрдХреНрдд рдкрд╣рд▓реЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред


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

рд╣рдо рдмрд╛рддрдЪреАрдд рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ?

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

рджреВрд╕рд░рд╛ рдЙрдкрдпреЛрдЧ рдорд╛рдорд▓рд╛ (DCI)


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

рдпрд╣ рднреА рдзреНрдпрд╛рди рджреЗрдиреЗ рдпреЛрдЧреНрдп рд╣реИ рдХрд┐ рд╣рдо рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рд▓рд╛рд▓ рдФрд░ рд╣рд░реЗ рд░рдВрдЧ рдХреЗ рддрд░реАрдХреЛрдВ рдХреЛ рдирд╣реАрдВ рджреЗрдЦрддреЗ рд╣реИрдВред рдкреНрд░рддреНрдпреЗрдХ рд╕рдВрджрд░реНрдн рдореЗрдВ рдЗрд╕рдХреЗ рдирд┐рд╖реНрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╡рд┐рдзрд┐рдпрд╛рдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рдпрд╣ рдмрд╣реБрдд рд╕рд╛рд░ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдЪрд▓реЛ рд░реВрдмреА рдЙрджрд╛рд╣рд░рдг рдХреЛрдб рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓реЗрдВред

рдХреЛрдб рдЙрджрд╛рд╣рд░рдг


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

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

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

class Account def decrease_balance(amount); end def increase_balance(amount); end def balance; end def update_log(message, amount); end def self.find(id); end end 

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

 class TransferringMoney include Context def self.transfer source_account_id, destination_account_id, amount source = Account.find(source_account_id) destination = Account.find(destination_account_id) TransferringMoney.new(source, destination).transfer amount end attr_reader :source_account, :destination_account def initialize source_account, destination_account @source_account = source_account.extend SourceAccount @destination_account = destination_account.extend DestinationAccount end def transfer amount in_context do source_account.transfer_out amount end end ... end 

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

рдЕрдЧрд▓рд╛, рдореИрдВ рдЕрдкрдиреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ рдЦрд╛рддрд╛ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рднреВрдорд┐рдХрд╛рдПрдБ рд╕реМрдВрдкрддрд╛ рд╣реВрдБред рдореИрдВ рдЗрди рдбреЗрдЯрд╛ рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рд╕реНрд░реЛрдд рдЦрд╛рддрд╛ рдФрд░ рдкреНрд░рд╛рдкреНрддрдХрд░реНрддрд╛ рдЦрд╛рддрд╛ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рд╢рд┐рдХреНрд╖рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред

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

рдЕрдм рдЖрдЗрдП рднреВрдорд┐рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдбрд╛рд▓рддреЗ рд╣реИрдВ:

 class TransferringMoney include Context ... def transfer amount ... end module SourceAccount include ContextAccssor def transfer_out amount raise "Insufficient funds" if balance < amount decrease_balance amount context.destination_account.transfer_in amount update_log "Transferred out", amount end end module DestinationAccount include ContextAccssor def transfer_in amount increase_balance amount update_log "Transferred in", amount end end end 

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

рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдмрд╛рддреЛрдВ рдкрд░ рдзреНрдпрд╛рди рджреЗрдВ:


рдкреНрд░рд╕рдВрдЧ рдФрд░ рджреЛрдиреЛрдВ рднреВрдорд┐рдХрд╛рдПрдБ:

 class TransferringMoney include Context def self.transfer source_account_id, destination_account_id, amount source = Account.find(source_account_id) destination = Account.find(destination_account_id) TransferringMoney.new(source, destination).transfer amount end attr_reader :source_account, :destination_account def initialize source_account, destination_account @source_account = source_account.extend SourceAccount @destination_account = destination_account.extend DestinationAccount end def transfer amount in_context do source_account.transfer_out amount end end module SourceAccount include ContextAccssor def transfer_out amount raise "Insufficient funds" if balance < amount decrease_balance amount context.destination_account.transfer_in amount update_log "Transferred out", amount end end module DestinationAccount include ContextAccssor def transfer_in amount increase_balance amount update_log "Transferred in", amount end end end 

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


рдЗрд▓рд╛рдХреЗ

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

рдлреЛрдХрд╕

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

"рд╕рд┐рд╕реНрдЯрдо рдХреНрдпрд╛ рд╣реИ" рдФрд░ "рд╕рд┐рд╕реНрдЯрдо рдХреНрдпрд╛ рдХрд░рддрд╛ рд╣реИ"

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


рд╕реНрд░реЛрдд рдХреЛрдб == рд░реИрдВрддрд┐рдо

рд╕рд╛рде рд╣реА, рд╕реЛрд░реНрд╕ рдХреЛрдб рд░рдирдЯрд╛рдЗрдо рд╕реЗ рдореЗрд▓ рдЦрд╛рддрд╛ рд╣реИред рд░рдирдЯрд╛рдЗрдо рд╣рдореЗрдВ рджрд┐рдЦрд╛рддрд╛ рд╣реИ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рджреЛ рдЦрд╛рддреЗ рд╣реИрдВ рдФрд░ рд╣рд╕реНрддрд╛рдВрддрд░рдг рд░рд╛рд╢рд┐ рд╣реИред рдпрджрд┐ рдЖрдк рд╕рдВрджрд░реНрдн рдЦреЛрд▓рддреЗ рд╣реИрдВ рддреЛ рдпрд╣ рдЖрдкрдХреЛ рджрд┐рдЦрд╛рдИ рджреЗрдЧрд╛ред

рд╕реНрдкрд╖реНрдЯ рднреВрдорд┐рдХрд╛рдПрдБ

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



рд╕реВрддреНрд░реЛрдВ рдХрд╛ рдХрд╣рдирд╛ рд╣реИ


рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд▓реЗрдЦ рд╣реА:

рдпрджрд┐ рдЖрдк рдЗрд╕ рд╡рд┐рдЪрд╛рд░ рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рджреЗрдЦрдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддрд╛ рд╣реВрдВ:

рдпрджрд┐ рдЖрдк рдХрд┐рддрд╛рдмреЗрдВ рдкрдврд╝рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдпреЗ рддреАрди рдкреБрд╕реНрддрдХреЗрдВ рд╕реБрдЭрд╛ рд╕рдХрддрд╛ рд╣реВрдВ:

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


All Articles