рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдореЗрдВ рдЯреЗрдореНрдкреНрд▓реЗрдЯ (рдпрд╛ рдкреИрдЯрд░реНрди) рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреЛрдб рдХреЛ рд╕рд░рд▓, рдЕрдзрд┐рдХ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рдмрдирд╛рдиреЗ рдФрд░ рдкрд╣рд┐рдпрд╛ рдХреЛ рд╕реБрджреГрдврд╝ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ, рд╕рд╛рде рд╣реА рд╕рд╛рде рдЖрдпреЛрдЬрдХреЛрдВ рдХреЛ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХреЗ рд╡реИрдЪрд╛рд░рд┐рдХ рдврд╛рдВрдЪреЗ рдореЗрдВ рд╕реНрд░реЛрдд рдХреЛрдб рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЙрдиреНрд╣реЗрдВ рдПрдХ рд╣реА рдЖрдзрд╛рд░ рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд┐рднрд┐рдиреНрди рд╕реНрддрд░реЛрдВ рдХреЗ рдкреНрд░рд╢рд┐рдХреНрд╖рдг рдХреЗ рд╕рд╛рде рдкреНрд░рднрд╛рд╡реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдиреЗ рдХреА рдЗрдЪреНрдЫрд╛ рд╕реЗ рдЙрдкрдЬрд╛ рд╣реИред рдЕрдиреБрдкреНрд░рдпреЛрдЧред рдЗрд╕рдХрд╛ рдорддрд▓рдм рдпрд╣ рд╣реИ рдХрд┐ рдбрд┐рдЬрд╛рдЗрдирд┐рдВрдЧ рдкреИрдЯрд░реНрди рд╕реАрдЦрдирд╛ рдПрдХ рдкреНрд░реЛрдЧреНрд░рд╛рдорд░ рдХреЗ рдкреЗрд╢реЗрд╡рд░ рд╡рд┐рдХрд╛рд╕ рдореЗрдВ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдХрджрдо рд╣реИредрдбрд┐рдЬрд╛рдЗрди рдкреИрдЯрд░реНрди рдХрд╛ рдЕрдзреНрдпрдпрди рдХреИрд╕реЗ рдХрд░реЗрдВ? рджреЛ рджреГрд╖реНрдЯрд┐рдХреЛрдг рд╣реИрдВ: рдЙрдмрд╛рдК рдФрд░ рд╕рдордЭрджрд╛рд░ (рдХреНрдпрд╛ рдЖрдкрдХреЛ рдореЗрд░рд╛ рд╡рд░реНрдЧреАрдХрд░рдг рдкрд╕рдВрдж рд╣реИ?)ред рдПрдХ рдЙрдмрд╛рдК рджреГрд╖реНрдЯрд┐рдХреЛрдг рдореЗрдВ рдЕрдореВрд░реНрдд рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреИрдЯрд░реНрди рдХреА рдПрдХ рд╕реВрдЪреА рдХрд╛ рдЕрдХрд╛рджрдорд┐рдХ рдЕрдзреНрдпрдпрди рд╢рд╛рдорд┐рд▓ рд╣реИред рд╡реНрдпрдХреНрддрд┐рдЧрдд рд░реВрдк рд╕реЗ, рдореИрдВ рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд рдкрд╕рдВрдж рдХрд░рддрд╛ рд╣реВрдВ - рдПрдХ рдмреБрджреНрдзрд┐рдорд╛рди рджреГрд╖реНрдЯрд┐рдХреЛрдг, рдЬрдм рдХрд╛рд░реНрдп рдХреЛ рдЕрдкреЗрдХреНрд╖рд╛рдХреГрдд рдЙрдЪреНрдЪ рд╕реНрддрд░ рдкрд░ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рдЖрдкрдХреЛ рдбрд┐рдЬрд╝рд╛рдЗрди рдкреИрдЯрд░реНрди рдЪреБрдирдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдпрджреНрдпрдкрд┐ рдЖрдк рджреЛрдиреЛрдВ рджреГрд╖реНрдЯрд┐рдХреЛрдгреЛрдВ рдХреЛ рдЬреЛрдбрд╝ рд╕рдХрддреЗ рд╣реИрдВредрддреЛ рдЪрд▓рддреЗ рд╣реИрдВ?рд░рдгрдиреАрддрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ рд╡реНрдпрд╡рд╣рд╛рд░ рдЯреЗрдореНрдкрд▓реЗрдЯреНрд╕ рдХреЗ рдПрдХ рд╕рдореВрд╣ рдХреЛ рд╕рдВрджрд░реНрднрд┐рдд рдХрд░рддрд╛ рд╣реИредрд░рдгрдиреАрддрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреА рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдкрд░рд┐рднрд╛рд╖рд╛
рдЯреЗрдореНрдкреНрд▓реЗрдЯ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЗ рдПрдХ рдкрд░рд┐рд╡рд╛рд░ рдХреЗ рдмреАрдЪ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХрд╛ рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИ рдЬрдм рдХреЛрдИ рд╡рд╕реНрддреБ рдЕрдкрдиреЗ рдЖрдВрддрд░рд┐рдХ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрди рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЕрдкрдиреЗ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдмрджрд▓рддреА рд╣реИредрд░рдгрдиреАрддрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрджрд╛рд╣рд░рдг
- рд╕реЙрд░реНрдЯрд┐рдВрдЧ: рд╣рдо рдЗрди рдирдВрдмрд░реЛрдВ рдХреЛ рд╕реЙрд░реНрдЯ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╣рдо рдпрд╣ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдмреНрд░рд┐рдХреЙрд░реНрдЯ, рдмрдмрд▓реЛрд░реНрдЯ рдпрд╛ рдХрд┐рд╕реА рдЕрдиреНрдп рд╕реЙрд░реНрдЯрд┐рдВрдЧ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рд╡реЗрдмрд╕рд╛рдЗрдЯ рд╣реИ рдЬрд┐рд╕ рдкрд░ рдПрдХ рдкреЗрдЬ рд▓реЛрдХрдкреНрд░рд┐рдпрддрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рддрддреНрд╡реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдХрдИ рдЪреАрдЬреЗрдВ "рд▓реЛрдХрдкреНрд░рд┐рдп" рд╣реЛ рд╕рдХрддреА рд╣реИрдВ (рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд┐рдЪрд╛рд░, рдЕрдзрд┐рдХрд╛рдВрд╢ рдЧреНрд░рд╛рд╣рдХ, рд╕реГрдЬрди рдХреА рддрд╛рд░реАрдЦ, рдЕрдзрд┐рдХрд╛рдВрд╢ рдЧрддрд┐рд╡рд┐рдзрд┐, рдХрдо рд╕реЗ рдХрдо рдЯрд┐рдкреНрдкрдгреА)ред рдорд╛рдорд▓реЗ рдореЗрдВ рдкреНрд░рдмрдВрдзрди рдХреЛ рдЕрднреА рддрдХ рдпрд╣ рдирд╣реАрдВ рдкрддрд╛ рд╣реИ рдХрд┐ рдСрд░реНрдбрд░ рдХреИрд╕реЗ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдмрд╛рдж рдХреА рддрд╛рд░реАрдЦ рдореЗрдВ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдСрд░реНрдбрд░ рдХреЗ рд╕рд╛рде рдкреНрд░рдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рдЖрдк рдСрд░реНрдбрд░ рд╡рд┐рдзрд┐ рдХреЗ рд╕рд╛рде рдПрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ (IOrderAl рдПрд▓реНрдЧреЛрд░рд┐рдердо рдпрд╛ рдХреБрдЫ рдФрд░) рдмрдирд╛рддреЗ рд╣реИрдВ рдФрд░ рдСрд░реНрдбрд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХреЛ IOrderAl рдПрд▓реНрдЧреЛрд░рд┐рдердо рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдареЛрд╕ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХреЗ рдЖрджреЗрд╢ рдХреЛ рд╕реМрдВрдкрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВред ред рдЖрдк CommentOrderer, ActivOrderer рдЗрддреНрдпрд╛рджрд┐ рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдирдИ рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ рдкреНрд░рдХрдЯ рд╣реЛрдиреЗ рдкрд░ рдмрд╕ рдЙрдиреНрд╣реЗрдВ рдмрдВрдж рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
- рд╡рд┐рд╖рдо рд╡рд╕реНрддреБрдУрдВ (рдХрддрд╛рд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдФрд░ рдбреЗрдЯрд╛ рдХреЛ рдмрдЪрд╛рдиреЗ) рд╕реЗ рдПрдХ рдХрддрд╛рд░ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг: рдПрдХ рдЙрджрд╛рд╣рд░рдг рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рд╕рд┐рд╕реНрдЯрдо рд╣реЛрдЧрд╛ рдЬреЛ рд╡рд┐рднрд┐рдиреНрди рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ рд╕реЗ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЬрдорд╛ рдХрд░рддрд╛ рд╣реИ, рдлрд┐рд░ рдХрддрд╛рд░ рд╕реЗ рдПрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдирд┐рдХрд╛рд▓рдиреЗ рдФрд░ рдлрд┐рд░ рдЗрд╕реЗ рд╕рд╣реЗрдЬрдиреЗ рдХреЗ рдмрд╛рдж, рдпрд╣ рдЗрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЪрдпрди рд░рдгрдиреАрддрд┐ рджреНрд╡рд╛рд░рд╛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
- рдорд╛рдиреНрдпрдХрд░рдг рд╣рдореЗрдВ "рдХреБрдЫ рдирд┐рдпрдо" рдХреЗ рдЕрдиреБрд╕рд╛рд░ рддрддреНрд╡реЛрдВ рдХреА рдЬрд╛рдВрдЪ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрднреА рддрдХ рд╕реНрдкрд╖реНрдЯ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ рдирд┐рдпрдо рдХреНрдпрд╛ рд╣реЛрдЧрд╛, рдФрд░ рд╣рдо рдирдП рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рд╕реЛрдЪ рд╕рдХрддреЗ рд╣реИрдВред
- рдкреНрд░рдорд╛рдгреАрдХрд░рдг: рдмреЗрд╕рд┐рдХ, рдбрд╛рдЗрдЬреЗрд╕реНрдЯ, рдУрдкрдирдЖрдИрдбреА, рдУрдПрде рдпреЛрдЬрдирд╛рдУрдВ рдХреЗ рдмреАрдЪ рдПрдХ рдкреНрд░рдорд╛рдгреАрдХрд░рдг рд░рдгрдиреАрддрд┐ рдХрд╛ рдЪрдпрди рдХрд░реЗрдВред
рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:interface AuthStrategy {
auth(): void;
}
class Auth0 implements AuthStrategy {
auth() {
log('Authenticating using Auth0 Strategy')
}
}
class Basic implements AuthStrategy {
auth() {
log('Authenticating using Basic Strategy')
}
}
class OpenID implements AuthStrategy {
auth() {
log('Authenticating using OpenID Strategy')
}
}
class AuthProgram {
private _strategy: AuthStrategy
use(strategy: AuthStrategy) {
this._strategy = strategy
return this
}
authenticate() {
if(this._strategy == null) {
log("No Authentication Strategy set.")
}
this._strategy.auth()
}
route(path: string, strategy: AuthStrategy) {
this._strategy = strategy
this.authenticate()
return this
}
}
- (games): тАФ , , , , , , , . , , , , . ┬л┬╗, ┬л┬╗, ┬л┬╗ Attack() . , ┬л┬╗, ┬л┬╗, ┬л┬╗, ┬л ┬╗ Attack ().
- (storing information): , , -. , PDF, , . , ; , , A, B C, . PDF , / PDF. , , , , , , B C, , A. , . PDF, , , . . Dependency Injection ┬л / ┬╗ ( , ), , , , , . , ( , ), , , , . ┬л ┬╗, ┬лcleanUp┬╗ , , , , .
- (outputting): X , CSV, XML, JSON .
- (invoicing): - , , - .
- (navigation): .
- (logging): Log4Net Log4j , Appenders, Layouts, and Filters.
- рдПрдиреНрдХреНрд░рд┐рдкреНрд╢рди: рдЫреЛрдЯреА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЗрди-рдореЗрдореЛрд░реА рд░рдгрдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрдм рдкреВрд░реА рдлрд╝рд╛рдЗрд▓ рдкрдврд╝реА рдЬрд╛рддреА рд╣реИ рдФрд░ рдореЗрдореЛрд░реА рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХреА рдЬрд╛рддреА рд╣реИ (рдЬреИрд╕реЗ, рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП <1 рдЬреАрдмреА)ред рдмрдбрд╝реА рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдЕрд▓рдЧ рд░рдгрдиреАрддрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдЬрд╣рд╛рдВ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдХреЛ рдореЗрдореЛрд░реА рдореЗрдВ рдкрдврд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЖрдВрд╢рд┐рдХ рд░реВрдк рд╕реЗ рдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдкрд░рд┐рдгрд╛рдо tmp рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рд╣реЛрддреЗ рд╣реИрдВред рдпреЗ рдПрдХ рд╣реА рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рджреЛ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░рдгрдиреАрддрд┐рдпрд╛рдБ рд╣реЛ рд╕рдХрддреА рд╣реИрдВред
рдпрд╣рд╛рдБ рдПрдХ рдЙрджрд╛рд╣рд░рдг рд╣реИ:
interface Cipher {
public void performAction();
}
class InMemoryCipherStrategy implements Cipher {
public void performAction() {
}
}
class SwaptToDiskCipher implements Cipher {
public void performAction() {
}
}
File file = getFile();
Cipher c = CipherFactory.getCipher( file.size());
c.performAction();
- рдЧреНрд░рд╛рдлрд┐рдХ рд╕рдВрдкрд╛рджрдХ: рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡рд┐рдВрдбреЛрдЬ рдкреЗрдВрдЯ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдПрдХ рд░рдгрдиреАрддрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рд╣реЛрддрд╛ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЖрдк рд╡рд┐рднрд┐рдиреНрди рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЖрдХрд╛рд░ рдФрд░ рд░рдВрдЧ рдХрд╛ рдЪрдпрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдпрд╣рд╛рдВ, рдЖрдХрд╛рд░ рдФрд░ рд░рдВрдЧ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рд╣реИрдВ рдЬрд┐рдиреНрд╣реЗрдВ рд░рдирдЯрд╛рдЗрдо рдкрд░ рдмрджрд▓рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
Shape redCircle = new RedCircle();
Shaped redCircle = new Shape("red","circle");
рдареЛрд╕ рдФрд░ рд░рдгрдиреАрддрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди
"рд░рдгрдиреАрддрд┐" рдЯреЗрдореНрдкрд▓реЗрдЯ рд╣рд▓ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдореБрдЦреНрдп рд╕рдорд╕реНрдпрд╛ рдХреНрдпрд╛ рд╣реИ? рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ рдлреНрд▓реИрдЯ рдХреЛрдб IF рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрди рд╣реИ ...ред рдпрд╣ ... ... рдЗрд╕рдХреЗ рд╡рд╕реНрддреБ рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдкрд░редрдЧрдВрджреЗ рдлреНрд▓реИрдЯ рдХреЛрдб рдХрд╛ рдЙрджрд╛рд╣рд░рдг (рдЧрд▓рдд):class Document {...}
class Printer {
print(doc: Document, printStyle: Number) {
if(printStyle == 0 ) {
}
if(printStyle == 1 ) {
}
if(printStyle == 2 ) {
}
if(printStyle == 3 ) {
}
if(printStyle == 4 ) {
}
}
}
"рд░рдгрдиреАрддрд┐" рдЯреЗрдореНрдкрд▓реЗрдЯ (рд╕рд╣реА рдврдВрдЧ рд╕реЗ) рдХреЗ рд╕рд╛рде рд╕рдорд╛рди рдХреЛрдб рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг:class Document {...}
interface PrintingStrategy {
printStrategy(d: Document): void;
}
class ColorPrintingStrategy implements PrintingStrategy {
printStrategy(doc: Document) {
log(" ")
}
}
class InvertedColorPrintingStrategy implements PrintingStrategy {
printStrategy(doc: Document) {
log(" ")
}
}
class Printer {
private printingStrategy: PrintingStrategy
print(doc: Document) {
this.printingStrategy.printStrategy(doc)
}
}
рдПрд╕рдУрдПрд▓рдЖрдИрдбреА рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд░рдгрдиреАрддрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рд╕рд╣реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдпрд╣рд╛рдВ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ ред
interface LockOpenStrategy {
open();
lock();
}
class RetinaScannerLockOpenStrategy implements LockOpenStrategy {
open() {
}
lock() {
}
}
class KeypadLockOpenStrategy implements LockOpenStrategy {
open() {
if(password != ""){
log("Entry Denied")
return
}
}
lock() {
}
}
abstract class Door {
public lockOpenStrategy: LockOpenStrategy
}
class GlassDoor extends Door {}
class MetalDoor extends Door {}
class DoorAdapter {
openDoor(d: Door) {
d.lockOpenStrategy.open()
}
}
рдиреАрдЪреЗ рддрд░реНрдХ рдХреА рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдПрдиреНрдХреЛрдбрд┐рдВрдЧ рд╣реИредvar glassDoor = new GlassDoor();
glassDoor.lockOpenStrategy = new RetinaScannerLockOpenStrategy();
var metalDoor = new MetalDoor();
metalDoor.lockOpenStrategy = new KeypadLockOpenStrategy();
var door1 = new DoorAdapter().openDoor(glassDoor);
var door2 = new DoorAdapter().openDoor(metalDoor);
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдКрдкрд░ рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдПрдХ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдСрдмреНрдЬреЗрдХреНрдЯ-рдУрд░рд┐рдПрдВрдЯреЗрдб рдХреЛрдб рд╣реИ рдЬреЛ рдЖрдИрдПрдл ... рдкреНрд░рдХреНрд░рд┐рдпрд╛рддреНрдордХ рд╢реИрд▓реА рдХреЛ рдмрд╛рд╣рд░ рдХрд░рддрд╛ рд╣реИ ред ELSE ....... рдпрд╛ SWITCH ... рдорд╛рдорд▓рд╛ ...рд╡реИрд╕реЗ, рд╣рдордиреЗ рдПрдбреЙрдкреНрдЯрд░ рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛? рджрд░рд╡рд╛рдЬрд╛ рдЦреБрдж рдирд╣реАрдВ рдЦреБрд▓реЗрдЧрд╛, рдпрд╣ рд╣рдореЗрд╢рд╛ рдПрдХ рддрд░рдл рд╕реЗ рдХреБрдЫ рдХреЗ рд╕рд╛рде рдЦреБрд▓рддрд╛ рд╣реИ, рдФрд░ рджреВрд╕рд░реА рддрд░рдл рджрд░рд╡рд╛рдЬрд╛ рдЦреЛрд▓рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдпрд╛ рдЗрд╕рдХреЗ рдЙрджреНрдШрд╛рдЯрди рдХреЗ рдкреВрд░рд╛ рд╣реЛрдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдХреБрдЫ рдШрдЯрдирд╛рдПрдВ рд╣реЛ рд╕рдХрддреА рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдЗрд╕рд╕реЗ рдкрд╣рд▓реЗ () рдФрд░ рдмрд╛рдж рдореЗрдВ () рднреА рдЬреБрдбрд╝рд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдЕрдиреБрдХреВрд▓рдХредрд░рд┐рдлреИрдХреНрдЯрд░рд┐рдВрдЧ рдФрд░ рд░рдгрдиреАрддрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ
рдЬрдм рдЖрдк рджреЛрд╣рд░рд╛рд╡ рд╡рд╛рд▓реЗ рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдиреЛрдЯрд┐рд╕ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрд▓рдЧ-рдЕрд▓рдЧ рд░реВрдкреЛрдВ рдореЗрдВ рд░рдгрдиреАрддрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдПрд▓реНрдЧреЛрд░рд┐рджрдо рдХреЛ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рдФрд░ рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреЗ рдХрд╛рд░реНрдпрдХреНрд░рдо рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рднрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИредрдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрджрд┐ рдЖрдк рдПрдХ рднрд╛рдИ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЗ рдЖрд╕рдкрд╛рд╕ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рд╕рд╢рд░реНрдд рд╡рд┐рд╡рд░рдг рджреЗрдЦрддреЗ рд╣реИрдВредрдЬрдм рдЕрдзрд┐рдХрд╛рдВрд╢ рд╡рд░реНрдЧреЛрдВ рдореЗрдВ рд╕рдВрдмрджреНрдз рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реЛрддрд╛ рд╣реИред рдФрд░ рдлрд┐рд░ рдЖрдкрдХреЛ рдЗрд╕реЗ рдЪреБрдирдиреЗ рдФрд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдХрдХреНрд╖рд╛рдУрдВ рдореЗрдВ рд▓реЗ рдЬрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИредрдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЙрджрд╛рд╣рд░рдгреЛрдВ рдХрд╛ рдпрд╣ рдЪрдпрди рдЖрдкрдХреЛ рд░рдгрдиреАрддрд┐ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХрд╛ рдЙрдЪрд┐рдд рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдорджрдж рдХрд░рддрд╛ рд╣реИредрдореБрдЭреЗ рдЦреБрд╢реА рд╣реЛрдЧреА рдпрджрд┐ рдЖрдк рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рдЗрд╕ рдЯреЗрдореНрдкрд▓реЗрдЯ рдХреЗ рдЕрдзрд┐рдХ рдЙрджрд╛рд╣рд░рдг рджреЗ рд╕рдХрддреЗ рд╣реИрдВредрд╣реИрдкреНрдкреА рдХреЛрдбрд┐рдВрдЧ, рджреЛрд╕реНрддреЛрдВ рдФрд░ рд╕рд╣рдХрд░реНрдорд┐рдпреЛрдВ!