"рдирдпрд╛" рд╣реЛрдирд╛ рдпрд╛ рди рд╣реЛрдирд╛ ...

рдлрд┐рд░ рд╕реЗ рд╣реИрд▓реЛред Android рд╡рд┐рдХрд╛рд╕ рдкрд░ рдмреБрдирд┐рдпрд╛рджреА рдФрд░ рдЙрдиреНрдирдд рдкрд╛рдареНрдпрдХреНрд░рдореЛрдВ рдХреА рд╢реБрд░реБрдЖрдд рдХреА рдкреНрд░рддреНрдпрд╛рд╢рд╛ рдореЗрдВ , рд╣рдордиреЗ рдЖрдкрдХреЗ рд▓рд┐рдП рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдЕрдиреБрд╡рд╛рдж рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рд╣реИред




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

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

рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ рд▓реЙрдЧрд┐рди рдлрд╝реАрд▓реНрдб рдореЗрдВ рдПрдХ рдИрдореЗрд▓ рдкрддрд╛ рджрд░реНрдЬ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдЖрдкрдХреЛ рдирдпрд╛ рдИрдореЗрд▓ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ (┬лa@b.com┬╗) рдХреНрдпрд╛ рд╣рдо рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рдЫреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╛ рд╣рдореЗрдВ рдЕрдкрдиреЗ рдирд┐рд░реНрдорд╛рддрд╛ рдореЗрдВ рдИрдореЗрд▓ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП? рдлрд┐рд░ рд╕реЗ, рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдлреНрд░реЗрдорд╡рд░реНрдХ рдЖрдкрдХреЛ рдИрдореЗрд▓ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЙрд╕ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдИрдореЗрд▓ рд╕реНрдерд┐рдд рд╣реИред рдФрд░ рдЪреБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╕реНрдЯреНрд░рд┐рдВрдЧ рдПрд╕ рд╣реИрдВред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдХрдИ рд╡рд╕реНрддреБрдПрдВ рд╣реИрдВ рдЬреЛ рдирд┐рд░реНрднрд░рддрд╛ рдЗрдВрдЬреЗрдХреНрд╢рди рдврд╛рдВрдЪрд╛ рдХрднреА рднреА рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд░ рд╕рдХрддреА рд╣реИрдВред рдЪрд▓реЛ рдЙрдиреНрд╣реЗрдВ "рдиреНрдпреВрдПрдмрд▓" рдХрд╣рддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдЖрдкрдХреЛ рдореИрдиреНрдпреБрдЕрд▓ рд░реВрдк рд╕реЗ рдЙрдирдХреЗ рд▓рд┐рдП рдирдпрд╛ рдХреЙрд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ ред

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

рдЖрдЗрдП MusicPlayer рдФрд░ Song рдХреЗ рдЙрджрд╛рд╣рд░рдг рдХреЛ рджреЗрдЦреЗрдВ

class Song {
  Song(String name, byte[] content);
}
class MusicPlayer {
  @Injectable
  MusicPlayer(AudioDevice device);
  play(Song song);
}

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

рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдЧрд░ MusicPlayer рдирд┐рдпрдо рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ Newable рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИ рддреЛ рдХреНрдпрд╛ рд╣реЛрддрд╛ рд╣реИред

class Song {
  String name;
  byte[] content;
  Song(String name, byte[] content);
}
class MusicPlayer {
  AudioDevice device;
  Song song;
  @Injectable
  MusicPlayer(AudioDevice device, Song song);
  play();
}

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

рдЕрдм рджреЗрдЦрддреЗ рд╣реИрдВ рдХрд┐ рдЕрдЧрд░ рд╕реЙрдиреНрдЧ рдирд┐рдпрдо рдХреЛ рддреЛрдбрд╝рддрд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреЗ рдирд┐рд░реНрдорд╛рдг рдореЗрдВ рдЗрдВрдЬреЗрдХреНрд╢рди рд▓рдЧрд╛рдиреЗ рдХрд╛ рдЕрдиреБрд░реЛрдз рдХрд░рддрд╛ рд╣реИред

class MusicPlayer {
  AudioDevice device;
  @Injectable
  MusicPlayer(AudioDevice device);
}
class Song {
  String name;
  byte[] content;
  MusicPlayer palyer;
  Song(String name, byte[] content, MusicPlayer player);
  play();
}
class SongReader {
  MusicPlayer player
  @Injectable
  SongReader(MusicPlayer player) {
    this.player = player;
  }
  Song read(File file) {
    return new Song(file.getName(),
                    readBytes(file),
                    player);
  }
}

рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдареАрдХ рд╣реИред рд▓реЗрдХрд┐рди рд╕реЛрдЪрд┐рдП рдХрд┐ рдЧрд╛рдиреЗ рдХреИрд╕реЗ рдмрдирд╛рдП рдЬрд╛рдПрдВрдЧреЗред рд╕рдВрднрд╡рддрдГ, рдЧрд╛рдиреЗ рдбрд┐рд╕реНрдХ рдкрд░ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдореЗрдВ SongReader рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред SongReader рдХреЛ MusicPlayer рд╕реЗ рдЕрдиреБрд░реЛрдз рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рддрд╛рдХрд┐ Song рдХреЗ рд▓рд┐рдП рдирдпрд╛ рдХреЙрд▓ рдХрд░рддреЗ рд╕рдордп, рд╡рд╣ MusicPlayer рдкрд░ Song рдХреА рдирд┐рд░реНрднрд░рддрд╛ рдХреЛ рдкреВрд░рд╛ рдХрд░ рд╕рдХреЗред рдХреНрдпрд╛ рдЖрдкрдиреЗ рдпрд╣рд╛рдБ рдХреБрдЫ рдЧрд▓рдд рджреЗрдЦрд╛ рд╣реИ? MusicRlayer рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ SongReader рдХреЛ рдХреНрдпрд╛ рдбрд░ рд╣реИ? рдпрд╣ Demeter рдХрд╛рдиреВрди рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рд╣реИред SongReader рдХреЛ MusicPlayer рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рдкрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред рдХрдо рд╕реЗ рдХрдо рдХреНрдпреЛрдВрдХрд┐ SongReader MusicPlayer рдХреЗ рд╕рд╛рде рддрд░реАрдХреЛрдВ рдХреЛ рдХреЙрд▓ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред рд╡рд╣ рдХреЗрд╡рд▓ MusicPlayer рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЬрд╛рдирддрд╛ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ Song рдиреЗ Newable / Injectable рдЬреБрджрд╛рдИ рдХрд╛ рдЙрд▓реНрд▓рдВрдШрди рдХрд┐рдпрд╛ рд╣реИред SongReader рд╕реЙрдиреНрдЧ рдореЗрдВ рддреНрд░реБрдЯрд┐ рдХреЗ рд▓рд┐рдП рднреБрдЧрддрд╛рди рдХрд░рддрд╛ рд╣реИред рдЪреВрдБрдХрд┐ рд╡рд╣ рд╕реНрдерд╛рди рдЬрд╣рд╛рдБ рддреНрд░реБрдЯрд┐ рдХреА рдЬрд╛рддреА рд╣реИ рдФрд░ рдЬрд╣рд╛рдБ рдкрд░рд┐рдгрд╛рдо рд╕рд╛рдордиреЗ рдЖрддреЗ рд╣реИрдВ, рд╡рд╣реА рдмрд╛рдд рдирд╣реАрдВ рд╣реИ, рдпрд╣ рддреНрд░реБрдЯрд┐ рдмрд╣реБрдд рд╣реА рд╕реВрдХреНрд╖реНрдо рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдирд┐рджрд╛рди рдХрд░рдирд╛ рдХрдард┐рди рд╣реИред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рднреА рд╣реИ рдХрд┐ рдХрдИ рд▓реЛрдЧреЛрдВ рд╕реЗ рдпрд╣ рдЧрд▓рддреА рд╣реЛрдиреЗ рдХреА рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИред

рдкрд░реАрдХреНрд╖рдг рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, рдпрд╣ рдПрдХ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рджрд░реНрдж рд╣реИред рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ SongWriter рд╣реИ рдФрд░ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ рдХрд┐ рдпрд╣ Song рдХреЛ рдбрд┐рд╕реНрдХ рдкрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХреНрд░рдордмрджреНрдз рдХрд░рддрд╛ рд╣реИред рдЖрдкрдХреЛ рдПрдХ MockMusicPlayer рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рддрд╛рдХрд┐ рдЖрдк рдЗрд╕реЗ рд╕реЙрдиреНрдЧ рдХреЛ рдкрд╛рд╕ рдХрд░ рд╕рдХреЗрдВ рддрд╛рдХрд┐ рдЖрдк рдЗрд╕реЗ рд╕реЛрдВрдЧрд╡рд░реНрдЯрд░ рдХреЛ рдкрд╛рд╕ рдХрд░ рд╕рдХреЗрдВред рд╣рдо рднреА рдпрд╣рд╛рдБ MusicPlayer рдореЗрдВ рдХреНрдпреЛрдВ рдЖрддреЗ рд╣реИрдВ? рдЖрдЗрдП рдЗрд╕реЗ рджреВрд╕рд░реЗ рддрд░реАрдХреЗ рд╕реЗ рджреЗрдЦреЗрдВред рдЧреАрдд рд╡рд╣ рд╣реИ рдЬрд┐рд╕реЗ рдЖрдк рдХреНрд░рдордмрджреНрдз рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рдФрд░ рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдЬрд╛рд╡рд╛ рдХреНрд░рдорд╛рдВрдХрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рди рдХреЗрд╡рд▓ рд╕реЙрдиреНрдЧ, рдмрд▓реНрдХрд┐ рдореНрдпреВрдЬрд┐рдХрдкреЗрдпрд░ рдФрд░ рдСрдбрд┐рдпреЛрдбреЗрд╡рд┐рд╕ рдХреЛ рднреА рд╕реАрд░рд┐рдпрд▓ рдХрд░рддреЗ рд╣реИрдВред рди рддреЛ MusicPayer рдФрд░ рди рд╣реА AudioDevice рдХреЛ рдХреНрд░рдордмрджреНрдз рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдЫреЛрдЯреЗ рдкрд░рд┐рд╡рд░реНрддрди рдкрд░реАрдХреНрд╖рдг рдХреНрд╖рдорддрд╛ рдХреЛ рдмрд╣реБрдд рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рдмрдирд╛рддреЗ рд╣реИрдВред

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

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

class Song {
  Song(String name, byte[] content);
  boolean isPlayable(MusicPlayer player);
}

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

рдкрд╛рдареНрдпрдХреНрд░рдореЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдиреЗрдВ



All Articles