рдПрдХрд▓ рдЙрддреНрддрд░рджрд╛рдпрд┐рддреНрд╡ рд╕рд┐рджреНрдзрд╛рдВрдд. рдпрд╣ рдЙрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рд▓рдЧрддрд╛ рд╣реИ

рдПрдХрд▓ рдЙрддреНрддрд░рджрд╛рдпрд┐рддреНрд╡ рд╕рд┐рджреНрдзрд╛рдВрдд. рдпрд╣ рдЙрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рд▓рдЧрддрд╛ рд╣реИ рдПрдХрд▓ рдЙрддреНрддрд░рджрд╛рдпрд┐рддреНрд╡ рд╕рд┐рджреНрдзрд╛рдВрдд, рдЬрд┐рд╕реЗ рдПрдХрд▓ рдЙрддреНрддрд░рджрд╛рдпрд┐рддреНрд╡ рдХреЗ рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЗ рд░реВрдк рдореЗрдВ рднреА рдЬрд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ,
рдЙрд░реНрдл рд╕рдорд╛рди рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛ рдХрд╛ рд╕рд┐рджреНрдзрд╛рдВрдд - рд╕рдордЭрдиреЗ рдореЗрдВ рдПрдХ рдЕрддреНрдпрдВрдд рдлрд┐рд╕рд▓рди рднрд░рд╛ рд╡реНрдпрдХреНрддрд┐ рдФрд░ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рд╕рд╛рдХреНрд╖рд╛рддреНрдХрд╛рд░ рдореЗрдВ рдРрд╕рд╛ рдШрдмрд░рд╛рд╣рдЯ рднрд░рд╛ рдкреНрд░рд╢реНрдиред

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

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

рд╡рд╣ рдорд╛рдорд▓рд╛ рдЬрд╣рд╛рдВ рдХрддрд╛рд░ рдХрд╛ рдЖрдХрд╛рд░ рддреАрди рдХрд╛ рдЧреБрдгрдЬ рдерд╛, рдПрд╕рдЖрд░рдкреА рдХрд╛ рдПрдХ рдЕрдЪреНрдЫрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдерд╛ред

рдкрд░рд┐рднрд╛рд╖рд╛ 1. рдПрдХрд▓ рдЬрд┐рдореНрдореЗрджрд╛рд░реА.

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

рд╡рд╕реНрддреБ "рдкреАрдиреЗ тАЛтАЛрд╡рд╛рд▓рд╛" рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ (рдкрд┐рдпрдХреНрдХрдбрд╝).
рдПрд╕рдЖрд░рдкреА рд╕рд┐рджреНрдзрд╛рдВрдд рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо рдЬрд┐рдореНрдореЗрджрд╛рд░рд┐рдпреЛрдВ рдХреЛ рддреАрди рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░реЗрдВрдЧреЗ:

  • рдПрдХ рдбрд╛рд▓рддрд╛ рд╣реИ (рдбрд╛рд▓реЛрдСрдкрд░реЗрд╢рди)
  • рдПрдХ рдкреАрддрд╛ рд╣реИ (рдбреНрд░рд┐рдВрдХрдЕрдкрдСрдкрд░реЗрд╢рди)
  • рдПрдХ рдХреЗ рдкрд╛рд╕ рдирд╛рд╢реНрддрд╛ рд╣реИ (рдЯреЗрдХрдмрд╛рдЗрдЯрдСрдкрд░реЗрд╢рди)

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

рдкреАрдиреЗ рдХрд╛ рдЧрдбреНрдврд╛, рдмрджрд▓реЗ рдореЗрдВ, рдЗрди рдХрд╛рд░реНрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдореБрдЦреМрдЯрд╛ рд╣реИ:

╤Бlass Tippler {
    //...
    void Act(){
        _pourOperation.Do() // ╨╜╨░╨╗╨╕╤В╤М
        _drinkUpOperation.Do() // ╨▓╤Л╨┐╨╕╤В╤М
        _takeBiteOperation.Do() // ╨╖╨░╨║╤Г╤Б╨╕╤В╤М
    }
}

рдПрдХрд▓ рдЙрддреНрддрд░рджрд╛рдпрд┐рддреНрд╡ рд╕рд┐рджреНрдзрд╛рдВрдд. рдпрд╣ рдЙрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рд▓рдЧрддрд╛ рд╣реИ

рдХреНрдпреЛрдВ?

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

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

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

рдЕрдм, рдПрд╕рдЖрд░рдкреА рдПрдХ рд╕рд┐рджреНрдзрд╛рдВрдд рд╣реИ рдЬреЛ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреИрд╕реЗ рд╡рд┐рдШрдЯрд┐рдд рд╣реЛрдирд╛ рд╣реИ, рдпрд╛рдиреА рд╡рд┐рднрд╛рдЬрди рд░реЗрдЦрд╛ рдХрд╣рд╛рдВ рдЦреАрдВрдЪрдиреА рд╣реИ.

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

рдПрдХрд▓ рдЙрддреНрддрд░рджрд╛рдпрд┐рддреНрд╡ рд╕рд┐рджреНрдзрд╛рдВрдд. рдпрд╣ рдЙрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рд▓рдЧрддрд╛ рд╣реИ

рдЖрдЗрдП рд╢рд░рд╛рдм рдкреАрдиреЗ рдФрд░ рдЕрдкрдШрдЯрди рдХреЗ рджреМрд░рд╛рди рдордВрдХреА рдореИрди рдХреЛ рдорд┐рд▓рдиреЗ рд╡рд╛рд▓реЗ рдлрд╛рдпрджреЛрдВ рдкрд░ рд▓реМрдЯрддреЗ рд╣реИрдВ:

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

(рдУрд╣, рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдПрдХ рдУрд╕реАрдкреА рд╕рд┐рджреНрдзрд╛рдВрдд рд╣реИ, рдФрд░ рдореИрдВрдиреЗ рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреА рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░реА рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд┐рдпрд╛ рд╣реИ)

рдФрд░, рдЬрд╝рд╛рд╣рд┐рд░ рд╣реИ, рд╡рд┐рдкрдХреНрд╖:

  • рд╣рдореЗрдВ рдФрд░ рдкреНрд░рдХрд╛рд░ рдмрдирд╛рдиреЗ рд╣реЛрдВрдЧреЗ.
  • рдПрдХ рд╢рд░рд╛рдмреА рдкрд╣рд▓реА рдмрд╛рд░ рдХреБрдЫ рдШрдВрдЯреЗ рджреЗрд░ рд╕реЗ рд╢рд░рд╛рдм рдкреАрддрд╛ рд╣реИ, рдЕрдиреНрдпрдерд╛ рдирд╣реАрдВ рдкреАрддрд╛ред

рдкрд░рд┐рднрд╛рд╖рд╛ 2. рдПрдХреАрдХреГрдд рдкрд░рд┐рд╡рд░реНрддрдирд╢реАрд▓рддрд╛.

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

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

рджреВрд╕рд░рд╛ "рдлреЙрд░рд╡рд░реНрдб рдПрдВрдб рдУрдирд▓реА рдлреЙрд░рд╡рд░реНрдб" рдкрджреНрдзрддрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИ рдФрд░ рдЗрд╕рдореЗрдВ рд╡рд┐рдзрд┐ рдХреЗ рд╕рднреА рддрд░реНрдХ рд╢рд╛рдорд┐рд▓ рд╣реИрдВ рдЕрдзрд┐рдирд┐рдпрдо:

//╨Э╨╡ ╤В╤А╨░╤В╤М╤В╨╡ ╨▓╤А╨╡╨╝╤П  ╨╜╨░ ╨╕╨╖╤Г╤З╨╡╨╜╨╕╨╡ ╤Н╤В╨╛╨│╨╛ ╨║╨╗╨░╤Б╤Б╨░. ╨Ы╤Г╤З╤И╨╡ ╤Б╤К╨╡╤И╤М╤В╨╡ ╨┐╨╡╤З╨╡╨╜╤М╨║╤Г
╤Бlass BrutTippler {
   //...
   void Act(){
        // ╨╜╨░╨╗╨╕╨▓╨░╨╡╨╝
    if(!_hand.TryDischarge(from:_bottle, to:_glass, size:_glass.Capacity))
        throw new OverdrunkException();

    // ╨▓╤Л╨┐╨╕╨▓╨░╨╡╨╝
    if(!_hand.TryDrink(from: _glass,  size: _glass.Capacity))
        throw new OverdrunkException();

    //╨Ч╨░╨║╤Г╤Б╤Л╨▓╨░╨╡╨╝
    for(int i = 0; i< 3; i++){
        var food = _foodStore.TakeOrDefault();
        if(food==null)
            throw new FoodIsOverException();

        _hand.TryEat(food);
    }
   }
}

рдпреЗ рджреЛрдиреЛрдВ рд╡рд░реНрдЧ, рдПрдХ рдмрд╛рд╣рд░реА рдкрд░реНрдпрд╡реЗрдХреНрд╖рдХ рдХреЗ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╕реЗ, рдмрд┐рд▓реНрдХреБрд▓ рдПрдХ рдЬреИрд╕реЗ рджрд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ "рдкреАрдиреЗ" рдХреА рд╕рдорд╛рди рдЬрд┐рдореНрдореЗрджрд╛рд░реА рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВред

рднреНрд░рдо!

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

рдПрд╕рд╕реАрдкреА рдХрд╛ рдХрд╣рдирд╛ рд╣реИ рдХрд┐ "рдПрдХ рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдмрджрд▓рд╛рд╡ рдХрд╛ рдПрдХ рдФрд░ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИ". рдЕрд░реНрдерд╛рддреН, тАЬрдЬрд┐рдореНрдореЗрджрд╛рд░реА рд╣реА рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдХрд╛рд░рдг рд╣реИредтАЭ

(рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЬреЛ рд▓реЛрдЧ рдореВрд▓ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рдЖрдП рдереЗ рд╡реЗ рд╡рд╛рдирд░ рдорд╛рдирд╡ рдХреА рдЯреЗрд▓реАрдкреИрдерд┐рдХ рдХреНрд╖рдорддрд╛рдУрдВ рдореЗрдВ рдЖрд╢реНрд╡рд╕реНрдд рдереЗ)

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

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

рдкрд░рд┐рднрд╛рд╖рд╛ 3. рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХрд╛ рд╕реНрдерд╛рдиреАрдпрдХрд░рдгред

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

рдЖрдЗрдП рдбрд╛рд▓рдиреЗ рдХреА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд╕рд╛рде рд▓реЙрдЧрд┐рдВрдЧ рд╢реБрд░реВ рдХрд░реЗрдВ:

class PourOperation: IOperation{
    PourOperation(ILogger log /*....*/){/*...*/}
    //...
    void Do(){
        _log.Log($"Before pour with {_hand} and {_bottle}");
        //Pour business logic ...
        _log.Log($"After pour with {_hand} and {_bottle}");
    }
}

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

interface IPourLogger{
    void LogBefore(IHand, IBottle){}
    void LogAfter(IHand, IBottle){}
    void OnError(IHand, IBottle, Exception){}
}

class PourOperation: IOperation{
    PourOperation(IPourLogger log /*....*/){/*...*/}
    //...
    void Do(){
        _log.LogBefore(_hand, _bottle);
        try{
             //... business logic
             _log.LogAfter(_hand, _bottle");
        }
        catch(exception e){
            _log.OnError(_hand, _bottle, e)
        }
    }
}

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

рдФрд░ рдпрд╣ рдпрд╛рдж рд░рдЦрддреЗ рд╣реБрдП рдХрд┐ рдПрдХ рд╢рд░рд╛рдм рдкреАрдиреЗ рд╡рд╛рд▓реЗ рдХреЗ рд▓рд┐рдП рддреАрди рдСрдкрд░реЗрд╢рди рд╣реЛрддреЗ рд╣реИрдВ, рд╣рдореЗрдВ рдиреМ рд▓реЙрдЧрд┐рдВрдЧ рдХрдХреНрд╖рд╛рдПрдВ рдорд┐рд▓рддреА рд╣реИрдВред рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╕рдВрдкреВрд░реНрдг рдкреЗрдп рдордВрдбрд▓реА рдореЗрдВ 14 (!!!) рд╡рд░реНрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

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

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

... Srp рдХреА рддреАрд╕рд░реА рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рдЕрд╕реНрддрд┐рддреНрд╡ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реАрдЦреЗ рдмрд┐рдирд╛:

тАЬрдПрдХрд▓ рдЙрддреНрддрд░рджрд╛рдпрд┐рддреНрд╡ рд╕рд┐рджреНрдзрд╛рдВрдд рдпрд╣ рдмрддрд╛рддрд╛ рд╣реИ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рдорд╛рди рдЪреАрдЬреЛрдВ рдХреЛ рдПрдХ рдЬрдЧрд╣ рд╕рдВрдЧреНрд░рд╣рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП". рдпрд╛ "рдПрдХ рд╕рд╛рде рдЬреЛ рдкрд░рд┐рд╡рд░реНрддрди рд╣реЛрддрд╛ рд╣реИ рдЙрд╕реЗ рдПрдХ рдЬрдЧрд╣ рд░рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП"

рдпрд╛рдиреА рдЕрдЧрд░ рд╣рдо рдХрд┐рд╕реА рдСрдкрд░реЗрд╢рди рдХреА рд▓реЙрдЧрд┐рдВрдЧ рдмрджрд▓рддреЗ рд╣реИрдВ рддреЛ рд╣рдореЗрдВ рдЙрд╕реЗ рдПрдХ рд╣реА рдЬрдЧрд╣ рдкрд░ рдмрджрд▓рдирд╛ рд╣реЛрдЧрд╛ред

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

рдПрдХрд▓ рдЙрддреНрддрд░рджрд╛рдпрд┐рддреНрд╡ рд╕рд┐рджреНрдзрд╛рдВрдд. рдпрд╣ рдЙрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рд▓рдЧрддрд╛ рд╣реИ

рдЕрдм рдкреАрдиреЗ рд╡рд╛рд▓реЗ рдХреЛ рдмреЗрд╣рддрд░ рдорд╣рд╕реВрд╕ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП. рдЗрд╕ рддрдереНрдп рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдХрд┐ IPourLogger рд▓реЙрдЧрд░ рдХреЛ рддреАрди рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдХреЛрдИ рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рд╣рдо рд╕рднреА рд▓реЙрдЧрд░реНрд╕ рдХреЛ рдПрдХ рдкреНрд░рдХрд╛рд░ рдореЗрдВ рднреА рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ:

class OperationLogger{
    public OperationLogger(string operationName){/*..*/}
    public void LogBefore(object[] args){/*...*/}       
    public void LogAfter(object[] args){/*..*/}
    public void LogError(object[] args, exception e){/*..*/}
}

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

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдкреАрдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╣рдорд╛рд░реЗ рдкрд╛рд╕ 5 рдХрдХреНрд╖рд╛рдПрдВ рд╣реИрдВ:

  • рдбрд╛рд▓рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп
  • рдкреАрдиреЗ рдХрд╛ рдСрдкрд░реЗрд╢рди
  • рдЬреИрдорд┐рдВрдЧ рдСрдкрд░реЗрд╢рди
  • рд▓рдХрдбрд╝рд╣рд╛рд░рд╛
  • рдкреАрдиреЗ рд╡рд╛рд▓рд╛ рдореБрдЦреМрдЯрд╛

рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдХрдбрд╝рд╛рдИ рд╕реЗ рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИ рдФрд░ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдПрдХ рдХрд╛рд░рдг рд╣реИред рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рд╕рдорд╛рди рд╕рднреА рдирд┐рдпрдо рдкрд╛рд╕ рдореЗрдВ рд╣реА рд╕реНрдерд┐рдд рд╣реИрдВред

рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдЬреАрд╡рди рдХрд╛ рдЙрджрд╛рд╣рд░рдг

рд╣рдордиреЗ рдПрдХ рдмрд╛рд░ b2b рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкрдВрдЬреАрдХреГрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реЗрд╡рд╛ рд▓рд┐рдЦреА рдереАред рдФрд░ рд╕рдорд╛рди рд╕рд╛рдордЧреНрд░реА рдХреА 200 рдкрдВрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ GOD рд╡рд┐рдзрд┐ рд╕рд╛рдордиреЗ рдЖрдИ:

  • 1рд╕реА рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рдПрдХ рдЕрдХрд╛рдЙрдВрдЯ рдмрдирд╛рдПрдВ
  • рдЗрд╕ рдЦрд╛рддреЗ рд╕реЗ рднреБрдЧрддрд╛рди рдореЙрдбреНрдпреВрд▓ рдкрд░ рдЬрд╛рдПрдВ рдФрд░ рд╡рд╣рд╛рдВ рдЗрд╕реЗ рдмрдирд╛рдПрдВ
  • рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рдореБрдЦреНрдп рд╕рд░реНрд╡рд░ рдкрд░ рдРрд╕реЗ рдЦрд╛рддреЗ рд╡рд╛рд▓рд╛ рдХреЛрдИ рдЦрд╛рддрд╛ рддреЛ рдирд╣реАрдВ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ
  • рдПрдХ рдирдпрд╛ рдЦрд╛рддрд╛ рдмрдирд╛рдПрдВ
  • рднреБрдЧрддрд╛рди рдореЙрдбреНрдпреВрд▓ рдореЗрдВ рдкрдВрдЬреАрдХрд░рдг рдкрд░рд┐рдгрд╛рдо рдФрд░ рдкрдВрдЬреАрдХрд░рдг рдкрд░рд┐рдгрд╛рдо рд╕реЗрд╡рд╛ рдореЗрдВ 1рд╕реА рдирдВрдмрд░ рдЬреЛрдбрд╝реЗрдВ
  • рдЗрд╕ рддрд╛рд▓рд┐рдХрд╛ рдореЗрдВ рдЦрд╛рддрд╛ рдЬрд╛рдирдХрд╛рд░реА рдЬреЛрдбрд╝реЗрдВ
  • рдкреЙрдЗрдВрдЯ рд╕реЗрд╡рд╛ рдореЗрдВ рдЗрд╕ рдХреНрд▓рд╛рдЗрдВрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреЙрдЗрдВрдЯ рдирдВрдмрд░ рдмрдирд╛рдПрдВред рдЗрд╕ рд╕реЗрд╡рд╛ рдХреЛ рдЕрдкрдирд╛ 1рд╕реА рдЦрд╛рддрд╛ рдирдВрдмрд░ рднреЗрдЬреЗрдВред

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

рдПрдХ рдШрдВрдЯреЗ рдХреА рд░реАрдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдХреЗ рдмрд╛рдж, рд╣рдо рдЗрдиреНрдлреНрд░рд╛рд╕реНрдЯреНрд░рдХреНрдЪрд░ рдХреЛрдб рдФрд░ рдЦрд╛рддреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдХреБрдЫ рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ/рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рдЕрд▓рдЧ рдХрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реБрдПред рдЧреЙрдб рдореЗрдердб рдиреЗ рдЗрд╕реЗ рдЖрд╕рд╛рди рдмрдирд╛ рджрд┐рдпрд╛, рд▓реЗрдХрд┐рди рдХреЛрдб рдХреА 100 рдкрдВрдХреНрддрд┐рдпрд╛рдБ рдмрдЪреА рдереАрдВ рдЬреЛ рд╕реБрд▓рдЭрдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреА рдереАрдВред

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

рд░реАрддрд┐рд╡рд╛рджред

рдЕрдм рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЕрдкрдиреЗ рд╢рд░рд╛рдмреА рдХреЛ рдЕрдХреЗрд▓рд╛ рдЫреЛрдбрд╝ рджреЗрдВред рдЕрдкрдиреЗ рдЖрдБрд╕реВ рд╕реБрдЦрд╛рдУ - рд╣рдо рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рдХрд┐рд╕реА рджрд┐рди рдЗрд╕ рдкрд░ рд▓реМрдЯреЗрдВрдЧреЗред рдЖрдЗрдП рдЕрдм рдЗрд╕ рд▓реЗрдЦ рд╕реЗ рдкреНрд░рд╛рдкреНрдд рдЬреНрдЮрд╛рди рдХреЛ рдФрдкрдЪрд╛рд░рд┐рдХ рд░реВрдк рджреЗрдВред

рдФрдкрдЪрд╛рд░рд┐рдХрддрд╛ 1. рдПрд╕рдЖрд░рдкреА рдХреА рдкрд░рд┐рднрд╛рд╖рд╛

  1. рддрддреНрд╡реЛрдВ рдХреЛ рдЕрд▓рдЧ рдХрд░реЗрдВ рддрд╛рдХрд┐ рдЙрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдПрдХ рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реЛред
  2. рдЙрддреНрддрд░рджрд╛рдпрд┐рддреНрд╡ рдХрд╛ рдЕрд░реНрде рд╣реИ "рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдХрд╛рд░рдгред" рдЕрд░реНрдерд╛рддреН, рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдкреНрд░рддреНрдпреЗрдХ рддрддреНрд╡ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХрд╛ рдХреЗрд╡рд▓ рдПрдХ рд╣реА рдХрд╛рд░рдг рд╣реЛрддрд╛ рд╣реИред
  3. рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рдкрд░рд┐рд╡рд░реНрддрди. рд╕реНрдерд╛рдиреАрдпрдХреГрдд рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП. рд╕рдордХрд╛рд▓рд┐рдХ рд░реВрдк рд╕реЗ рдмрджрд▓рдиреЗ рд╡рд╛рд▓реЗ рддрддреНрд╡ рдкрд╛рд╕-рдкрд╛рд╕ рд╣реЛрдиреЗ рдЪрд╛рд╣рд┐рдПред

рдФрдкрдЪрд╛рд░рд┐рдХрддрд╛ 2. рдЖрд╡рд╢реНрдпрдХ рд╕реНрд╡-рдкрд░реАрдХреНрд╖рдг рдорд╛рдирджрдВрдбред

рдореИрдВрдиреЗ рдПрд╕рдЖрд░рдкреА рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкрд░реНрдпрд╛рдкреНрдд рдорд╛рдирджрдВрдб рдирд╣реАрдВ рджреЗрдЦреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЖрд╡рд╢реНрдпрдХ рд╢рд░реНрддреЗрдВ рд╣реИрдВ:

1) рдЕрдкрдиреЗ рдЖрдк рд╕реЗ рдкреВрдЫреЗрдВ рдХрд┐ рдпрд╣ рдХрдХреНрд╖рд╛/рд╡рд┐рдзрд┐/рдореЙрдбреНрдпреВрд▓/рд╕реЗрд╡рд╛ рдХреНрдпрд╛ рдХрд░рддреА рд╣реИред рдЖрдкрдХреЛ рдЗрд╕рдХрд╛ рдЙрддреНрддрд░ рдПрдХ рд╕рд░рд▓ рдкрд░рд┐рднрд╛рд╖рд╛ рдХреЗ рд╕рд╛рде рджреЗрдирд╛ рд╣реЛрдЧрд╛ред ( рдзрдиреНрдпрд╡рд╛рдж рдмреНрд░рд╛рдЗрдЯреЛрд░реА )

рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг

рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХрднреА-рдХрднреА рдЗрд╕рдХреА рд╕рд░рд▓ рдкрд░рд┐рднрд╛рд╖рд╛ рдвреВрдБрдврд╝рдирд╛ рдмрд╣реБрдд рдХрдард┐рди рд╣реЛрддрд╛ рд╣реИ

2) рдХрд┐рд╕реА рдмрдЧ рдХреЛ рдареАрдХ рдХрд░рдиреЗ рдпрд╛ рдХреЛрдИ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рдЬреЛрдбрд╝рдиреЗ рд╕реЗ рдиреНрдпреВрдирддрдо рд╕рдВрдЦреНрдпрд╛ рдореЗрдВ рдлрд╝рд╛рдЗрд▓реЗрдВ/рдХрдХреНрд╖рд╛рдПрдБ рдкреНрд░рднрд╛рд╡рд┐рдд рд╣реЛрддреА рд╣реИрдВред рдЖрджрд░реНрд╢ рд░реВрдк рд╕реЗ - рдПрдХ.

рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг

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

рдПрдХ рдЕрдиреНрдп рдЙрджрд╛рд╣рд░рдг рдкрд┐рдЫрд▓реЗ рд╡рд╛рд▓реЗ рдХреЗ рд╕рдорд╛рди рдПрдХ рдирдпрд╛ рдпреВрдЖрдИ рдирд┐рдпрдВрддреНрд░рдг рдЬреЛрдбрд╝рдирд╛ рд╣реИред рдпрджрд┐ рдпрд╣ рдЖрдкрдХреЛ 10 рдЕрд▓рдЧ-рдЕрд▓рдЧ рдЗрдХрд╛рдЗрдпрд╛рдБ рдФрд░ 15 рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрдиреНрд╡рд░реНрдЯрд░реНрд╕ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рддрд╛ рд╣реИ, рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдЗрд╕реЗ рдЬрд╝реНрдпрд╛рджрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

3) рдпрджрд┐ рдХрдИ рдбреЗрд╡рд▓рдкрд░ рдЖрдкрдХреЗ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдХреА рд╡рд┐рднрд┐рдиреНрди рд╡рд┐рд╢реЗрд╖рддрд╛рдУрдВ рдкрд░ рдХрд╛рдо рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рддреЛ рдорд░реНрдЬ рд╕рдВрдШрд░реНрд╖ рдХреА рд╕рдВрднрд╛рд╡рдирд╛, рдпрд╛рдиреА, рдПрдХ рд╣реА рдлрд╝рд╛рдЗрд▓/рдХреНрд▓рд╛рд╕ рдХреЛ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ рдХрдИ рдбреЗрд╡рд▓рдкрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдмрджрд▓реЗ рдЬрд╛рдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рдиреНрдпреВрдирддрдо рд╣реИред

рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг

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

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

рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг

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

5) рдирд╛рдордХрд░рдг рд╕реНрдкрд╖реНрдЯ рд╣реИ.

рд╕реНрдкрд╖реНрдЯреАрдХрд░рдг

рд╣рдорд╛рд░рд╛ рд╡рд░реНрдЧ рдпрд╛ рдкрджреНрдзрддрд┐ рдХрд┐рд╕реА рдПрдХ рдЪреАрдЬрд╝ рдХреЗ рд▓рд┐рдП рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░ рд╣реИ, рдФрд░ рдЬрд╝рд┐рдореНрдореЗрджрд╛рд░реА рдЙрд╕рдХреЗ рдирд╛рдо рд╕реЗ рдЭрд▓рдХрддреА рд╣реИ

AllManagersManagerService - рд╕рдВрднрд╡рддрдГ рдПрдХ рдИрд╢реНрд╡рд░ рд╡рд░реНрдЧ
рд▓реЛрдХрд▓рдкреЗрдореЗрдВрдЯ - рд╢рд╛рдпрдж рдирд╣реАрдВ

рдФрдкрдЪрд╛рд░рд┐рдХрддрд╛ 3. рдЕрд╡рд╕рд░-рдкреНрд░рдердо рд╡рд┐рдХрд╛рд╕ рдкрджреНрдзрддрд┐ред

рдбрд┐рдЬрд╝рд╛рдЗрди рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, рдордВрдХреА рдореИрди рд╣рд▓ рдХреА рдЬрд╛ рд░рд╣реА рд╕рдорд╕реНрдпрд╛ рдХреА рд╕рднреА рдмрд╛рд░реАрдХрд┐рдпреЛрдВ рдХреЛ рдирд╣реАрдВ рдЬрд╛рдирддрд╛ рдФрд░ рдорд╣рд╕реВрд╕ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдЧрд▓рддреА рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдЖрдк рд╡рд┐рднрд┐рдиреНрди рддрд░реАрдХреЛрдВ рд╕реЗ рдЧрд▓рддрд┐рдпрд╛рдБ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

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

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

рдЕрдм рдЗрд╕реЗ рдЦрд╝рддреНрдо рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рдЖ рдЧрдпрд╛ рд╣реИ

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

рдПрдХрд▓ рдЙрддреНрддрд░рджрд╛рдпрд┐рддреНрд╡ рд╕рд┐рджреНрдзрд╛рдВрдд. рдпрд╣ рдЙрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рд▓рдЧрддрд╛ рд╣реИ

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

рд╕реНрд░реЛрдд: www.habr.com

рдПрдХ рдЯрд┐рдкреНрдкрдгреА рдЬреЛрдбрд╝реЗрдВ