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

рдЗрд╕рд▓рд┐рдП, рд▓реЗрдЦ рд╣реА рдЗрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд╕рдВрднрд╛рд╡рд┐рдд рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╕реЗ рдПрдХ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдореЗрд░реЗ рд╡рд┐рдЪрд╛рд░ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН рдЧрддрд┐рд╢реАрд▓ рд╕рдЬрд╛рд╡рдЯ, рд╕реНрдереИрддрд┐рдХ рд╕рдЬрд╛рд╡рдЯ рдХреА рд╡реНрдпрд╛рдкрдХ рддрдХрдиреАрдХ рдХреЗ рд╡рд┐рдкрд░реАрддред
рд╕реНрдереИрддрд┐рдХ рд╕рдЬрд╛рд╡рдЯ рдкрд░ рдЧрддрд┐рд╢реАрд▓ рд╕рдЬрд╛рд╡рдЯ рдХрд╛ рд▓рд╛рдн рд╕рдЬреНрдЬрд╛рдХрд╛рд░реЛрдВ рдХреЗ рд╡рд┐рд╢реЗрд╖ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХрд╛ рдЕрднрд╛рд╡ рд╣реИред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, PHP рд╡рд░реНрдЧ рдХреЛ рд╕рдЬрд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╕рднреА рдХрд╛ рдЙрдкрдпреЛрдЧ рдЙрдЪрд┐рдд рдЕрд╢реБрджреНрдзрддрд╛ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реИред
рдбреЗрдХреЛрд░реЗрдЯрд░ (рдКрдкрд░ рд▓рд┐рдВрдХ) рдкрд░ рдЕрдВрдЧреНрд░реЗрдЬреА рд╡рд┐рдХрд┐рдкреАрдбрд┐рдпрд╛ рд▓реЗрдЦ рдореЗрдВ рд╡рд┐рдВрдбреЛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдореЗрдВ рд╕реНрдереИрддрд┐рдХ рд╕рдЬрд╛рд╡рдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХрд╛ рдПрдХ рдЬрд╛рд╡рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИред рдЙрд╕ рдЙрджрд╛рд╣рд░рдг рдХреЗ рдЕрдиреБрд░реВрдк, рд▓реЗрдХрд┐рди рдбреЗрдХреЛрд░реЗрдЯрд░ рд╡рд░реНрдЧреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛:
class Window { use TDecorator; private $title; function __construct($title) { $this->title = $title; } function draw() {
рдПрдХ рд╡рд╕реНрддреБ рдХреЛ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕рдЬрд╛рдиреЗ рдкрд░, рдпрд╣ рди рдХреЗрд╡рд▓ рдЙрд╕рдХреЗ рд╕рднреА рд╕рд╛рд░реНрд╡рдЬрдирд┐рдХ рдФрд░ рдирд┐рдЬреА рддрд░реАрдХреЛрдВ рддрдХ рдкрд╣реБрдВрдЪ рдкреНрд░рд╛рдкреНрдд рдХрд░рддрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рд╕рд╛рде-рд╕рд╛рде рдЙрдирдХреЗ рдореВрд▓реНрдпреЛрдВ рддрдХ рднреА рдкрд╣реБрдВрдЪрддрд╛ рд╣реИред рд╣рдо рдХрд╣ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдЗрд╕ рддрд░рд╣ рд╕реЗ
рд╡рд░реНрдЯрд┐рдХрд▓рд╕реНрдХреЙрд▓рд░ рдХреНрд▓рд╛рд╕
рд╡рд┐рдВрдбреЛ рдХреНрд▓рд╛рд╕ рдХреЛ
рд╡рд┐рд░рд╛рд╕рдд рдореЗрдВ рдорд┐рд▓рддреА рд╣реИ , рд▓реЗрдХрд┐рди рдХреЗрд╡рд▓ рдПрдХ рд╡рд╕реНрддреБ рдХреЗ рд▓рд┐рдПред
рдПрдХ рд╡рд╕реНрддреБ рдХреЛ рджреВрд╕рд░реЗ рдХреЗ рд╕рд╛рде рд╕рдЬрд╛рдиреЗ рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдПрдХ рд╕рд░рд▓ рддрд░реАрдХрд╛ рд╣реИ; рдирдП рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдЬреЛрдбрд╝рдирд╛ рд╕рдВрднрд╡ рд╣реИ:
class Integer { use TDecorator; protected $value; function __construct($value) { $this->value = intval($value); } } $integer = new Integer(9); $integer->decorateWith('isOdd', function() { return (boolean) ($this->value % 2); }); echo $integer->isOdd();
рдЕрд╢реБрджреНрдзрддрд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдбреЗрдХреЛрд░реЗрдЯрд░ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
рдпрд╣рд╛рдВ рдкрд╛рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред
рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рдЫреЛрдЯрд╛ рд▓реЗрдЦ рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реИред