Π Π°Π·Π½ΠΎΠ΅

ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ проСктирования c: Π¨ΠΏΠ°Ρ€Π³Π°Π»ΠΊΠ° ΠΏΠΎ шаблонам проСктирования / Habr

Π‘ΠΎΠ΄Π΅Ρ€ΠΆΠ°Π½ΠΈΠ΅

Π¨Π°Π±Π»ΠΎΠ½ проСктирования β€” ВикипСдия

ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ΠžΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ΅ названиСОписаниСОписан Π² Design Patterns
ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ (Fundamental)
Π¨Π°Π±Π»ΠΎΠ½ дСлСгированияDelegation patternΠžΠ±ΡŠΠ΅ΠΊΡ‚ внСшнС Π²Ρ‹Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅, Π½ΠΎ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‘Ρ‚ ΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π΅Π½Π½ΠΎΡΡ‚ΡŒ Π·Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ этого повСдСния связанному ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ.Π½/Π΄
Π¨Π°Π±Π»ΠΎΠ½ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Π°Functional designΠ“Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½Ρƒ ΠΎΠ±ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ ΠΈ исполняСт Π΅Ρ‘ с ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌΠΎΠΌ ΠΏΠΎΠ±ΠΎΡ‡Π½Ρ‹Ρ… эффСктов Π½Π° Π΄Ρ€ΡƒΠ³ΠΈΠ΅ части ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.Π½/Π΄
НСизмСняСмый интСрфСйсImmutable interfaceΠ‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ нСизмСняСмого ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.Π½/Π΄
Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡInterfaceΠžΠ±Ρ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ для структурирования ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΡ… Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΎΡ‰Π΅ ΠΏΠΎΠ½ΡΡ‚ΡŒ.Π½/Π΄
Π˜Π½Ρ‚Π΅Ρ€Ρ„Π΅ΠΉΡ-ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Marker interfaceΠ’ качСствС Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Π° (ΠΊΠ°ΠΊ ΠΏΠΎΠΌΠ΅Ρ‚ΠΊΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎΠΉ сущности) примСняСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΈΠ»ΠΈ отсутствиС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ интСрфСйса-ΠΌΠ°Ρ€ΠΊΠ΅Ρ€Π°. Π’ соврСмСнных языках программирования вмСсто этого ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚Ρ‹ ΠΈΠ»ΠΈ Π°Π½Π½ΠΎΡ‚Π°Ρ†ΠΈΠΈ.Π½/Π΄
ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ свойствProperty containerΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ свойства для класса Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ (Π²Π½ΡƒΡ‚Ρ€ΠΈ класса), вмСсто Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΡ класса Π½ΠΎΠ²Ρ‹ΠΌΠΈ свойствами.Π½/Π΄
Канал событийEvent channelΠ Π°ΡΡˆΠΈΡ€ΡΠ΅Ρ‚ шаблон Publish/Subscribe, создавая Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠ°Π½Π°Π» для событий. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚Π΅Π»ΡŒ для подписки ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚-ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚Π΅Π»ΡŒ для ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ события Π² ΠΊΠ°Π½Π°Π»Π΅. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚Π΅Π»ΡŒ сущСствуСт ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎ ΠΎΡ‚ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ издатСля ΠΈΠ»ΠΈ подписчика. ΠŸΠΎΠ΄ΠΏΠΈΡΡ‡ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Π΅ события ΠΎΡ‚ Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅ΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π΄Π°ΠΆΠ΅ Ссли ΠΎΠ½ зарСгистрирован Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°Π½Π°Π»Π΅.Π½/Π΄
ΠŸΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ (Creational)Β β€” ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ проСктирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΡƒΡŽΡ‚ процСсс инстанцирования. Они ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ систСму нСзависимой ΠΎΡ‚ способа создания, ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ ΠΈ прСдставлСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π¨Π°Π±Π»ΠΎΠ½, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠΉ классы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ наслСдованиС, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ инстанцируСмый класс, Π° шаблон, ΠΏΠΎΡ€ΠΎΠΆΠ΄Π°ΡŽΡ‰ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, Π΄Π΅Π»Π΅Π³ΠΈΡ€ΡƒΠ΅Ρ‚ инстанцированиС Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ.
Абстрактная Ρ„Π°Π±Ρ€ΠΈΠΊΠ°Abstract factoryКласс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой интСрфСйс для создания ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² систСмы.Π”Π°
Π‘Ρ‚Ρ€ΠΎΠΈΡ‚Π΅Π»ΡŒBuilderКласс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой интСрфСйс для создания слоТного ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.Π”Π°
Π€Π°Π±Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄Factory methodΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ интСрфСйс для создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, Π½ΠΎ оставляСт подклассам Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠΉ класс ΠΈΠ½ΡΡ‚Π°Π½Ρ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ.Π”Π°
ΠžΡ‚Π»ΠΎΠΆΠ΅Π½Π½Π°Ρ инициализацияLazy initializationΠžΠ±ΡŠΠ΅ΠΊΡ‚, ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ Π²ΠΎ врСмя ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ обращСния ΠΊ Π½Π΅ΠΌΡƒ.НСт
ΠœΡƒΠ»ΡŒΡ‚ΠΈΡ‚ΠΎΠ½MultitonΠ“Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ класс ΠΈΠΌΠ΅Π΅Ρ‚ ΠΏΠΎΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½Ρ‹Π΅ экзСмпляры ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈ обСспСчиваСт Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ доступа ΠΊ Π½ΠΈΠΌ.НСт
ΠžΠ±ΡŠΠ΅ΠΊΡ‚Π½Ρ‹ΠΉ ΠΏΡƒΠ»Object poolКласс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт собой интСрфСйс для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π½Π°Π±ΠΎΡ€ΠΎΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΈ Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΊ использованию ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².НСт
ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏPrototypeΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ интСрфСйс создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‡Π΅Ρ€Π΅Π· ΠΊΠ»ΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° вмСсто создания Ρ‡Π΅Ρ€Π΅Π· конструктор.Π”Π°
ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ рСсурса Π΅ΡΡ‚ΡŒ инициализацияResource acquisition is initialization (RAII)ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ рСсурса совмСщаСтся с ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ, Π° освобоТдСниС — с ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ΅Π½ΠΈΠ΅ΠΌ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.НСт
ΠžΠ΄ΠΈΠ½ΠΎΡ‡ΠΊΠ°SingletonКласс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ экзСмпляр.Π”Π°
Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ (Structural) ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ слоТныС структуры, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‚ интСрфСйс ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ»ΠΈ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ, позволяя ΠΎΠ±Π»Π΅Π³Ρ‡ΠΈΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ.
АдаптСрAdapter / WrapperΠžΠ±ΡŠΠ΅ΠΊΡ‚, ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ взаимодСйствиС Π΄Π²ΡƒΡ… Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚, Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ прСдоставляСт нСсовмСстимый с ΠΏΠ΅Ρ€Π²Ρ‹ΠΌ интСрфСйс.Π”Π°
ΠœΠΎΡΡ‚BridgeΠ‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π°, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ интСрфСйс обращСния ΠΈ интСрфСйс Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ класса нСзависимо.Π”Π°
ΠšΠΎΠΌΠΏΠΎΠ½ΠΎΠ²Ρ‰ΠΈΠΊCompositeΠžΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΠ΅Ρ‚ Π² сСбС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π΅ΠΌΡƒ самому.Π”Π°
Π”Π΅ΠΊΠΎΡ€Π°Ρ‚ΠΎΡ€ ΠΈΠ»ΠΈ Wrapper/ΠžΠ±Ρ‘Ρ€Ρ‚ΠΊΠ°DecoratorКласс, Ρ€Π°ΡΡˆΠΈΡ€ΡΡŽΡ‰ΠΈΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ класса Π±Π΅Π· использования наслСдования.Π”Π°
ЀасадFacadeΠžΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ абстрагируСт Ρ€Π°Π±ΠΎΡ‚Ρƒ с нСсколькими классами, объСдиняя ΠΈΡ… Π² Π΅Π΄ΠΈΠ½ΠΎΠ΅ Ρ†Π΅Π»ΠΎΠ΅.Π”Π°
Единая Ρ‚ΠΎΡ‡ΠΊΠ° Π²Ρ…ΠΎΠ΄Π°Front controllerΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ ΡƒΠ½ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ интСрфСйс для интСрфСйсов Π² подсистСмС. Front Controller опрСдСляСт высокоуровнСвый интСрфСйс, ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‰ΠΈΠΉ использованиС подсистСмы.НСт
ΠŸΡ€ΠΈΡΠΏΠΎΡΠΎΠ±Π»Π΅Π½Π΅Ρ†FlyweightΠ­Ρ‚ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ сСбя ΠΊΠ°ΠΊ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ экзСмпляр Π² Ρ€Π°Π·Π½Ρ‹Ρ… мСстах ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½ΠΎ фактичСски Π½Π΅ ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ Ρ‚Π°ΠΊΠΎΠ²Ρ‹ΠΌ.Π”Π°
Π—Π°ΠΌΠ΅ΡΡ‚ΠΈΡ‚Π΅Π»ΡŒProxyΠžΠ±ΡŠΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ являСтся посрСдником ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, ΠΈ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚/ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ доступ ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρƒ, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‚ΡΡ Ρ‡Π΅Ρ€Π΅Π· Π½Π΅Π³ΠΎ.Π”Π°
ΠŸΠΎΠ²Π΅Π΄Π΅Π½Ρ‡Π΅ΡΠΊΠΈΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ (Behavioral) ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ, увСличивая Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π΅Π³ΠΎ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ.
Π¦Π΅ΠΏΠΎΡ‡ΠΊΠ° обязанностСйChain of responsibilityΠŸΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ Π² систСмС ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ отвСтствСнности.Π”Π°
Команда, Action, TransactionCommandΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ дСйствиС. ΠžΠ±ΡŠΠ΅ΠΊΡ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбС само дСйствиС ΠΈ Π΅Π³ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹.Π”Π°
Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€InterpreterΠ Π΅ΡˆΠ°Π΅Ρ‚ часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰ΡƒΡŽΡΡ, Π½ΠΎ ΠΏΠΎΠ΄Π²Π΅Ρ€ΠΆΠ΅Π½Π½ΡƒΡŽ измСнСниям, Π·Π°Π΄Π°Ρ‡Ρƒ.Π”Π°
Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€, CursorIteratorΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ собой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ доступ ΠΊ элСмСнтам ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°-Π°Π³Ρ€Π΅Π³Π°Ρ‚Π° Π±Π΅Π· использования описаний ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², входящих Π² состав Π°Π³Ρ€Π΅Π³Π°Ρ†ΠΈΠΈ.Π”Π°
ΠŸΠΎΡΡ€Π΅Π΄Π½ΠΈΠΊMediatorΠžΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°Π΅Ρ‚ взаимодСйствиС мноТСства ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², формируя ΠΏΡ€ΠΈ этом ΡΠ»Π°Π±ΡƒΡŽ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΡΡ‚ΡŒ ΠΈ избавляя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΎΡ‚ нСобходимости явно ΡΡΡ‹Π»Π°Ρ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ Π½Π° Π΄Ρ€ΡƒΠ³Π°.Π”Π°
Π₯Ρ€Π°Π½ΠΈΡ‚Π΅Π»ΡŒMementoΠŸΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ‚ Π½Π΅ Π½Π°Ρ€ΡƒΡˆΠ°Ρ ΠΈΠ½ΠΊΠ°ΠΏΡΡƒΠ»ΡΡ†ΠΈΡŽ Π·Π°Ρ„ΠΈΠΊΡΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠ΅ состояния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ·Π΄Π½Π΅Π΅ Π²ΠΎΡΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π΅Π³ΠΎ Π² этих состояниях.Π”Π°
Null ObjectNull ObjectΠŸΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ Π½ΡƒΠ»Π΅Π²Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ, прСдоставляя ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Β«ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽΒ».НСт
ΠΠ°Π±Π»ΡŽΠ΄Π°Ρ‚Π΅Π»ΡŒ ΠΈΠ»ΠΈ Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒ-подписчикObserverΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Ρ‚ΠΈΠΏΠ° Β«ΠΎΠ΄ΠΈΠ½ ΠΊΠΎ ΠΌΠ½ΠΎΠ³ΠΈΠΌΒ» ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ состояния ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° всС зависящиС ΠΎΡ‚ Π½Π΅Π³ΠΎ ΠΎΠΏΠΎΠ²Π΅Ρ‰Π°ΡŽΡ‚ΡΡ ΠΎΠ± этом событии.Π”Π°
Π‘Π»ΡƒΠ³Π°[en]ServantΠ˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для обСспСчСния ΠΎΠ±Ρ‰Π΅ΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π³Ρ€ΡƒΠΏΠΏΠ΅ классов.НСт
БпСцификацияSpecificationΠ‘Π»ΡƒΠΆΠΈΡ‚ для связывания бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ.НСт
БостояниСStateΠ˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Ρ‚Π΅Ρ… случаях, ΠΊΠΎΠ³Π΄Π° Π²ΠΎ врСмя выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΌΠ΅Π½ΡΡ‚ΡŒ своё ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² зависимости ΠΎΡ‚ своСго состояния.Π”Π°
БтратСгияStrategyΠŸΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для опрСдСлСния сСмСйства Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², инкапсуляции ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ… ΠΈ обСспСчСния ΠΈΡ… взаимозамСняСмости.Π”Π°
Π¨Π°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄Template methodΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ основу Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΈ позволяСт наслСдникам ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ шаги Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, Π½Π΅ измСняя Π΅Π³ΠΎ структуру Π² Ρ†Π΅Π»ΠΎΠΌ.Π”Π°
ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅Π»ΡŒVisitorΠžΠΏΠΈΡΡ‹Π²Π°Π΅Ρ‚ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ, которая выполняСтся Π½Π°Π΄ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… классов. ΠŸΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ класса Visitor Π½Π΅Ρ‚ нСобходимости ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ обслуТиваСмыС классы.Π”Π°
ΠŸΡ€ΠΎΡΡ‚Π°Ρ ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ°Simple PolicyНСт
Event listenerEvent listenerНСт
ΠžΠ΄Π½ΠΎΡ€Π°Π·ΠΎΠ²Ρ‹ΠΉ ΠΏΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅Π»ΡŒ

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ (ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹) проСктирования


ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ » ВвСдСниС Π² ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹

ΠŸΡ€ΠΈ создании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… систСм ΠΏΠ΅Ρ€Π΅Π΄ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ часто встаСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π²Ρ‹Π±ΠΎΡ€Π° Ρ‚Π΅Ρ… ΠΈΠ»ΠΈ ΠΈΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ. Π’ этих случаях Π½Π° ΠΏΠΎΠΌΠΎΡ‰ΡŒ приходят ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹. Π”Π΅Π»ΠΎ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠΎΡ‡Ρ‚ΠΈ навСрняка ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΡƒΠΆΠ΅ Ρ€Π΅ΡˆΠ°Π»ΠΈΡΡŒ Ρ€Π°Π½Π΅Π΅ ΠΈ ΡƒΠΆΠ΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΏΡ€ΠΎΠ΄ΡƒΠΌΠ°Π½Π½Ρ‹Π΅ элСгантныС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, составлСнныС экспСртами. Если эти Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΈ ΡΠΈΡΡ‚Π΅ΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π² ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈ, Ρ‚ΠΎ ΠΎΠ½ΠΈ станут доступными ΠΌΠ΅Π½Π΅Π΅ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΌ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ послС изучСния смогут ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΊΠ°ΠΊ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ ΠΈΠ»ΠΈ ΠΎΠ±Ρ€Π°Π·Ρ†Ρ‹ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ‡ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ класса. ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ ΠΊΠ°ΠΊ Ρ€Π°Π· ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ‚Π°ΠΊΠΈΡ… ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΡ…ΡΡ Π·Π°Π΄Π°Ρ‡.

ΠšΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΡ создания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния с использованиСм ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ², нСсомнСнно, ΠΎΡ‡Π΅Π½ΡŒ ваТная, Π½ΠΎ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ молодая, Π±Ρ‹Ρ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚, поэтому Π΄ΠΎ сих ΠΏΠΎΡ€ Π½Π΅Ρ‚ Ρ‡Π΅Ρ‚ΠΊΠΎΠ³ΠΎ опрСдСлСния, Ρ‡Ρ‚ΠΎ ΠΆΠ΅ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½. Об этом ΡΠ²ΠΈΠ΄Π΅Ρ‚Π΅Π»ΡŒΡΡ‚Π²ΡƒΡŽΡ‚ Π½Π΅ΠΏΡ€Π΅ΠΊΡ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ΡΡ дискуссии Π² популярной Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π΅ ΠΈ Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ„ΠΎΡ€ΡƒΠΌΠ°Ρ… Π² сСти.

НапримСр, слСдуСт Π»ΠΈ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΈ структуры Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°ΠΌΠΈ? По этому вопросу ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΏΡ€ΠΎΡ‚ΠΈΠ²ΠΎΠΏΠΎΠ»ΠΎΠΆΠ½Ρ‹Π΅ мнСния. Богласно ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· Π½ΠΈΡ…, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°ΠΌΠΈ, Π° Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстная Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»ΡŒΠ½Π°Ρ монография Π”ΠΎΠ½Π°Π»ΡŒΠ΄Π° ΠšΠ½ΡƒΡ‚Π° «Π˜ΡΠΊΡƒΡΡΡ‚Π²ΠΎ программирования» ΠΏΠΎ сути, прСдставляСт собой ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ². Богласно Π΄Ρ€ΡƒΠ³ΠΎΠΌΡƒ мнСнию, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π½Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°ΠΌΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ€Π΅ΡˆΠ°Π΅ΠΌΡ‹Π΅ ΠΈΠΌΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ слишком ΠΌΠ°Π»Ρ‹ (ΠΎΠΏΠ΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠΌΠΈ понятиями ΠΊΠ°ΠΊ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΈ ΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ рСсурсов), Π° ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ…ΠΎΡ€ΠΎΡˆΠΎ ΠΎΡ‡Π΅Ρ€Ρ‡Π΅Π½Π°. ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ ΠΆΠ΅ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ большСго ΠΌΠ°ΡΡˆΡ‚Π°Π±Π°, ΠΏΡ€ΠΈ этом ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ Π΄Π°Π΅Ρ‚ Π½Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Π° Π½Π΅ΠΊΠΈΠΉ ΠΏΡƒΡ‚ΡŒ ΠΊ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡŽ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ, Π²Ρ‹Π±ΠΎΡ€ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎΠ³ΠΎ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° — Π·Π°Π΄Π°Ρ‡Π° Π½Π΅Ρ‚Ρ€ΠΈΠ²ΠΈΠ°Π»ΡŒΠ½Π°Ρ, ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‰Π°Ρ ΠΎΡ‚ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€Π° Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΈΠ½Ρ‚ΡƒΠΈΡ†ΠΈΠΈ, ΠΎΠΏΡ‹Ρ‚Π°, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ творчСства.

НСмного истории

Π’ΠΏΠ΅Ρ€Π²Ρ‹Π΅, Π² ΠΊΠΎΠ½Ρ†Π΅ 1970-Ρ… Π³ΠΎΠ΄ΠΎΠ² ΠšΡ€ΠΈΡΡ‚ΠΎΡ„Π΅Ρ€ΠΎΠΌ АлСксандром Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ², ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹Ρ… для проСктирования Π·Π΄Π°Π½ΠΈΠΉ ΠΈ Π³ΠΎΡ€ΠΎΠ΄ΠΎΠ² [1]. Π’ ΠΊΠΎΠ½Ρ†Π΅ 1980-Ρ… Π³ΠΎΠ΄ΠΎΠ² ΠšΠ΅Π½Ρ‚ Π‘Π΅ΠΊ ΠΈ Π’Π°Ρ€Π΄ КаннингСм ΠΏΠΎΠΏΡ‹Ρ‚Π°Π»ΠΈΡΡŒ пСрСнСсти ΠΈΠ΄Π΅ΠΈ АлСксандра Π² ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ПО, составив 5 Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² для проСктирования ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΡ… интСрфСйсов Π½Π° языкС Smalltalk. Π’ 1989 ДТСймс КоплиСн Π² цСлях обучСния Π‘++ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΈ AT&T составил ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ ΠΈΠ΄ΠΈΠΎΠΌ Π‘++ (Ρ€Π°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡ‚ΡŒ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ², спСцифичных для языка программирования), Π° Π² 1991 Π½Π° Π΅Π³ΠΎ основС Π²Ρ‹ΡˆΠ»Π° Π² свСт ΠΊΠ½ΠΈΠ³Π° «Advanced C++ Programming Styles and Idioms» (имССтся русский ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ [7]).

Однако ΠΏΠΎ настоящСму популярным ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² Π² индустрии Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния стало послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π² 1994 Π±Ρ‹Π» ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³, Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰ΠΈΠΉ 23 ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ проСктирования [5]. Π­Ρ‚ΠΎΡ‚ ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ популярСн, Ρ‡Ρ‚ΠΎ часто упоминаСтся ΠΊΠ°ΠΊ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ GoF («Gang of Four» ΠΈΠ»ΠΈ «Π±Π°Π½Π΄Π° Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ…» ΠΏΠΎ числу Π°Π²Ρ‚ΠΎΡ€ΠΎΠ²).

Π’ настоящСС врСмя ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡŽΡ‚ Π½Π΅ΠΏΡ€Π΅Ρ€Ρ‹Π²Π½ΠΎ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‚ΡŒΡΡ. ΠŸΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹, ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈΡ… описания.

ΠšΠ»Π°ΡΡΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΡ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ²

Π’ силу популярности ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³Π° GoF часто ΠΏΠΎΠ΄ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°ΠΌΠΈ проСктирования ΠΏΠΎΠ΄Ρ€Π°Π·ΡƒΠΌΠ΅Π²Π°ΡŽΡ‚ всС Π²ΠΈΠ΄Ρ‹ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ индустрии, Ρ‡Ρ‚ΠΎ являСтся Π½Π΅ совсСм ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½Ρ‹ΠΌ. Π’ области Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… систСм сущСствуСт мноТСство ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚Π»ΠΈΡ‡Π°ΡŽΡ‚ΡΡ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ примСнСния, ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΎΠΌ, содСрТимым, стилСм описания. НапримСр, Π² зависимости ΠΎΡ‚ сфСры примСнСния ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ ΠΊΠ°ΠΊ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ Π°Π½Π°Π»ΠΈΠ·Π°, проСктирования, тСстирования, докумСнтирования, ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ процСсса Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, планирования ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.

Π’ настоящСС врСмя Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ популярными ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ проСктирования. Одной ΠΈΠ· распространСнных классификаций Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² являСтся классификация ΠΏΠΎ стСпСни Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΡƒΡ€ΠΎΠ²Π½ΡŽ абстракции рассматриваСмых систСм. Богласно [2], ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ проСктирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… систСм дСлятся Π½Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ:

  • АрхитСктурныС ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹
  • ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ проСктирования
  • Π˜Π΄ΠΈΠΎΠΌΡ‹

АрхитСктурныС ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹, являясь Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ высокоуровнСвыми ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°ΠΌΠΈ, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½ΡƒΡŽ схСму ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ систСмы Π² Ρ†Π΅Π»ΠΎΠΌ. Π’ Π΄Π°Π½Π½ΠΎΠΉ схСмС ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠ΅ систСмы, Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Π΅ подсистСмами, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ. ΠŸΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎΠ³ΠΎ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° являСтся Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстная программная ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ° «ΠΌΠΎΠ΄Π΅Π»ΡŒ-прСдставлСниС-ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€» (model-view-controller — MVC).

Π’ свою ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, подсистСмы ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΡΡ‚ΠΎΡΡ‚ΡŒ ΠΈΠ· Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Ρ… Π΅Π΄ΠΈΠ½ΠΈΡ† ΡƒΡ€ΠΎΠ²Π½Π΅ΠΌ Π½ΠΈΠΆΠ΅. ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ проСктирования ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ схСмы Π΄Π΅Ρ‚Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹Ρ… подсистСм ΠΈ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ, ΠΏΡ€ΠΈ этом ΠΎΠ½ΠΈ Π½Π΅ Π²Π»ΠΈΡΡŽΡ‚ Π½Π° структуру ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ систСмы Π² Ρ†Π΅Π»ΠΎΠΌ ΠΈ ΡΠΎΡ…Ρ€Π°Π½ΡΡŽΡ‚ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΡ‚ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ языка программирования. ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ GoF относятся ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΊ этой ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ. Богласно [5], ΠΏΠΎΠ΄ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°ΠΌΠΈ проСктирования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… систСм понимаСтся описаниС взаимодСйствия ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈ классов, Π°Π΄Π°ΠΏΡ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΠ±Ρ‰Π΅ΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ проСктирования Π² ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ контСкстС.

Π’ русскоязычной Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π΅ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‚ΡΡ нСсколько Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Π° ΠΎΡ€ΠΈΠ³ΠΈΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ названия design patterns — ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ проСктирования, ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ проСктирования, ΠΎΠ±Ρ€Π°Π·Ρ†Ρ‹. Π—Π΄Π΅ΡΡŒ Π² основном ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΈΠ½ΠΎΠ³Π΄Π° Π²Ρ‚ΠΎΡ€ΠΎΠΉ.

Π˜Π΄ΠΈΠΎΠΌΡ‹, являясь Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹ΠΌΠΈ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°ΠΌΠΈ, ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Π΅Π»ΠΎ с вопросами Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ особСнностСй Π΄Π°Π½Π½ΠΎΠ³ΠΎ языка программирования. ΠŸΡ€ΠΈ этом часто ΠΎΠ΄Π½ΠΈ ΠΈ Ρ‚Π΅ ΠΆΠ΅ ΠΈΠ΄ΠΈΠΎΠΌΡ‹ для Ρ€Π°Π·Π½Ρ‹Ρ… языков программирования выглядят ΠΏΠΎ-Ρ€Π°Π·Π½ΠΎΠΌΡƒ ΠΈΠ»ΠΈ Π½Π΅ ΠΈΠΌΠ΅ΡŽΡ‚ смысла вовсС. НапримСр, Π² C++ для устранСния Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… ΡƒΡ‚Π΅Ρ‡Π΅ΠΊ памяти ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈΠ½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ. Π˜Π½Ρ‚Π΅Π»Π»Π΅ΠΊΡ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ содСрТит ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π½Π° участок динамичСски Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ памяти, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ автоматичСски освобоТдСн ΠΏΡ€ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Π΅ ΠΈΠ· Π·ΠΎΠ½Ρ‹ видимости. Π’ срСдС Java Ρ‚Π°ΠΊΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ просто Π½Π΅ сущСствуСт, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Ρ‚Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ автоматичСская сборка мусора. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ, для использования ΠΈΠ΄ΠΈΠΎΠΌ Π½ΡƒΠΆΠ½ΠΎ Π³Π»ΡƒΠ±ΠΎΠΊΠΎ Π·Π½Π°Ρ‚ΡŒ особСнности примСняСмого языка программирования.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ области ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ², Π½Π΅ относящиСся ΠΊ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ Π²ΠΎΠΎΠ±Ρ‰Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ Π°Π½Π°Π»ΠΈΠ·Π°, тСстирования, докумСнтирования ΠΈ Π΄Ρ€.

ОписаниС ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ²

Π—Π°Π΄Π°Ρ‡Π° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° — Π΄Π°Ρ‚ΡŒ Ρ‡Π΅Ρ‚ΠΊΠΎΠ΅ описаниС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π² ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ области. Для этого ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ€Π°Π·Π½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Ρ‹ описаний ΠΎΡ‚ худоТСствСнно-ΠΎΠΏΠΈΡΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ [1] Π΄ΠΎ строгого, акадСмичСского [5]. Π’ ΠΎΠ±Ρ‰Π΅ΠΌ случаС описаниС ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π° всСгда содСрТит ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты:

  1. НазваниС ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°. ΠŸΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΠ΅Ρ‚ собой ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΠΎΠ΅ смысловоС имя, ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰Π΅Π΅ Π΄Π°Π½Π½ΡƒΡŽ Π·Π°Π΄Π°Ρ‡Ρƒ ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ ΠΈ Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.
  2. РСшаСмая Π·Π°Π΄Π°Ρ‡Π°. Π—Π΄Π΅ΡΡŒ даСтся ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ€Π΅ΡˆΠ°Π΅ΠΌΠ°Ρ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ являСтся Ρ‚Π°ΠΊΠΎΠ²ΠΎΠΉ, Ρ‡Π΅Ρ‚ΠΊΠΎ описываСт Π΅Π΅ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹.
  3. РСшСниС. Π—Π΄Π΅ΡΡŒ указываСтся, ΠΊΠ°ΠΊ ΠΈΠΌΠ΅Π½Π½ΠΎ Π΄Π°Π½Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ связано с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, приводится ΠΏΡƒΡ‚ΠΈ Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.
  4. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ использования ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Π°. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ приводятся достоинства, нСдостатки ΠΈ компромиссы.

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ примСнСния ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ²

Один ΠΈΠ· соавторов GoF, Π”ΠΆΠΎΠ½ ВлиссидСс [4] ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ прСимущСства примСнСния ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² проСктирования:

  1. Они (ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹) ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΡƒΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠΏΡ‹Ρ‚ экспСртов ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π³ΠΎ доступным рядовым Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ.
  2. ИмСна ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ своСго Ρ€ΠΎΠ΄Π° ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ позволяСт Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ Π΄Ρ€ΡƒΠ³Π°.
  3. Если Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ систСмы ΡƒΠΊΠ°Π·Π°Π½ΠΎ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ Π² Π½Π΅ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ, это позволяСт Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΡŽ быстрСС ΠΏΠΎΠ½ΡΡ‚ΡŒ систСму.
  4. ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ ΡƒΠΏΡ€ΠΎΡ‰Π°ΡŽΡ‚ Ρ€Π΅ΡΡ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€ΠΈΠ·Π°Ρ†ΠΈΡŽ систСмы нСзависимо ΠΎΡ‚ Ρ‚ΠΎΠ³ΠΎ, использовались Π»ΠΈ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ ΠΏΡ€ΠΈ Π΅Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.

ΠŸΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ проСктирования ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΡƒΡŽ систСму Π±ΠΎΠ»Π΅Π΅ Π³ΠΈΠ±ΠΊΠΎΠΉ, Π΅Π΅ Π»Π΅Π³Ρ‡Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, Π° ΠΊΠΎΠ΄ Ρ‚Π°ΠΊΠΎΠΉ систСмы Π² большСй стСпСни соотвСтствуСт ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°

ΠŸΡ€ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ΅ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π»ΠΎΠ² ΠΈΠ· Ρ€Π°Π·Π΄Π΅Π»Π° Design Patterns использовалась ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°:

  1. Alexander Π‘., Ishikawa S., Silverstein M. A Pattern Language: Towns, Buildings, Construction. Oxford University Press, 1977.
  2. Buschmann F., Meunier R., Rohnert H., Sommerlad P., Stal M. Pattern-Oriented Software Architecture, Volume 1, A System of Patterns. Wiley, 1996, 476 pages
  3. АлСксандрСску А. Π‘ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° C++ (сСрия C++ in Depth). — М.: Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π΄ΠΎΠΌ «Π’ΠΈΠ»ΡŒΡΠΌΡ», 2008.-336с
  4. ВлиссидСс Π”ΠΆ. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ шаблонов проСктирования. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ ΡˆΡ‚Ρ€ΠΈΡ…ΠΈ. — М.: Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π΄ΠΎΠΌ «Π’ΠΈΠ»ΡŒΡΠΌΡ», 2003.-144с
  5. Π“Π°ΠΌΠΌΠ° Π­., Π₯Π΅Π»ΠΌ Π ., ДТонсон Π ., ВлиссидСс Π”ΠΆ. ΠŸΡ€ΠΈΠ΅ΠΌΡ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ проСктирования. ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ проСктирования. — БПб.: ΠŸΠΈΡ‚Π΅Ρ€, 2001.-368с
  6. ΠšΠ΅Ρ€ΠΈΠ΅Π²ΡΠΊΠΈ Π”ΠΆ. Π Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΠ½Π³ с использованиСм шаблонов. — М.: Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π΄ΠΎΠΌ «Π’ΠΈΠ»ΡŒΡΠΌΡ», 2006.-400с
  7. КоплиСн Π”ΠΆ. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° C++. Классика CS. — БПб.: ΠŸΠΈΡ‚Π΅Ρ€, 2005.-479с
  8. Π›Π°Ρ€ΠΌΠ°Π½ К. ΠŸΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ UML ΠΈ шаблонов проСктирования, 2-Π΅ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅. — М.: Π˜Π·Π΄Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ Π΄ΠΎΠΌ «Π’ΠΈΠ»ΡŒΡΠΌΡ», 2004.-624с
  9. ЭккСль Π‘. Ѐилософия C++. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ C++. Π’ΠΎΠΌ 2. — БПб.: ΠŸΠΈΡ‚Π΅Ρ€, 2004.-608с

Π Π°Π΄Ρ‡Π΅Π½ΠΊΠΎ Π“Π»Π΅Π± Π˜Π³ΠΎΡ€Π΅Π²ΠΈΡ‡

ο»Ώ

НаучныС интСрСсы

  • Π“Ρ€ΠΈΠ΄-вычислСния.
  • ΠžΠ±Π»Π°Ρ‡Π½Ρ‹Π΅ вычислСния.
  • РаспрСдСлСнныС Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ систСмы.

ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹

  1. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Erasmus+ PWs@PhD. Основная Ρ†Π΅Π»ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° PWs@PhD – ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠ° развития, ΠΌΠΎΠ΄Π΅Ρ€Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ, ΠΈΠ½Ρ‚Π΅Ρ€Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ образования, Π° ΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π΅ΠΉ СвропСйского образования уровня PhD, содСйствиС созданию Π½ΠΎΠ²Ρ‹Ρ… PhD-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π² странах-ΠΏΠ°Ρ€Ρ‚Π½Π΅Ρ€Π°Ρ… Π² области ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΈ.
  2. БСрвисно-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ использованию ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΠ°ΠΊΠ΅Ρ‚ΠΎΠ² Π² распрСдСлСнных ΠΈ Π³Ρ€ΠΈΠ΄-срСдах (ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ DiVTB).
  3. ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Π°Ρ рСализация нСйросСтСвого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° распознавания Ρ€Π°Π·Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ€Π΅Ρ‡ΠΈ (Π§Π°ΡΡ‚ΡŒ 1, Π§Π°ΡΡ‚ΡŒ 2, Π§Π°ΡΡ‚ΡŒ 3).

Новости

  • [2013-12-25]  ОбновлСния страниц курсов:
  • [2013-12-17]  ОбновлСния страниц курсов:
  • [2013-11-28]  ОбновлСния страниц курсов:

Β 

  • [2013-11-07]Β Β Π Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ слайды ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΠΉ:
  • [2013-10-26]Β Π Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ слайды ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΠΉ:
  • [2013-06-03]Β Β Π Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Ρ‹ слайды ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΠΉ:

[Архив новостСй]

Бсылки

  • Mendeley — систСма для ΠΊΠ°Ρ‚Π°Π»ΠΎΠ³ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ управлСния Π±ΠΈΠ±Π»ΠΈΠΎΠ³Ρ€Π°Ρ„ΠΈΠ΅ΠΉ. ВстраиваСтся Π² Microsoft Word, позволяя Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ процСсс управлСния списками Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹ ΠΏΡ€ΠΈ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΊΠ΅ статСй. ΠŸΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ мноТСство Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ² оформлСния библиографичСских ссылок,Β Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π“ΠžΠ‘Π’-7.0.5-2008.
  • Memsource — опСрационная срСда для выполнСния ΠΏΠΈΡΡŒΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‰Π°Ρ Π±Π°Π·Ρ‹ памяти ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄ΠΎΠ², встроСнный ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ управлСния Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠ΅ΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅ тСкстовый Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€ MemSource Editor. ΠœΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΡΠΊΡΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ всСх стандартных Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠ², Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Word ΠΈ PowerPoint.

Мой ΠΏΡ€ΠΎΡ„ΠΈΠ»ΡŒ

Β 

Π£Ρ€ΠΎΠΊ 130 C# ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ проэктирования Ρ‡Π°ΡΡ‚ΡŒ 1

  • Главная

  • Π’ΠΈΠ΄Π΅ΠΎΡ‚Π΅ΠΊΠ°

    • ЕстСствознаниС

      • Π€ΠΈΠ·ΠΈΠΊΠ°

      • ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ°

      • Π₯имия

      • Биология

      • Экология

    • ΠžΠ±Ρ‰Π΅ΡΡ‚Π²ΠΎΠ·Π½Π°Π½ΠΈΠ΅

      • ΠžΠ±Ρ‰Π΅ΡΡ‚Π²ΠΎΠ·Π½Π°Π½ΠΈΠ΅ — ΠΊΠ°ΠΊ Π½Π°ΡƒΠΊΠ°

      • Π˜Π½ΠΎΡΡ‚Ρ€Π°Π½Π½Ρ‹Π΅ языки

      • Π˜ΡΡ‚ΠΎΡ€ΠΈΡ

      • ΠŸΡΠΈΡ…ΠΎΠ»ΠΎΠ³ΠΈΡ ΠΈ ΠΏΠ΅Π΄Π°Π³ΠΎΠ³ΠΈΠΊΠ°

      • Русский язык ΠΈ Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°

      • ΠšΡƒΠ»ΡŒΡ‚ΡƒΡ€ΠΎΠ»ΠΎΠ³ΠΈΡ

      • Π­ΠΊΠΎΠ½ΠΎΠΌΠΈΠΊΠ°

      • ΠœΠ΅Π½Π΅Π΄ΠΆΠΌΠ΅Π½Ρ‚

      • Логистика

      • Бтатистика

      • Ѐилософия

      • БухгалтСрский ΡƒΡ‡Π΅Ρ‚

Π¨Π°Π±Π»ΠΎΠ½Ρ‹ проСктирования

Π² C # . NET

Π¨Π°Π±Π»ΠΎΠ½Ρ‹ проСктирования

Π² C #

Π¨Π°Π±Π»ΠΎΠ½Ρ‹ проСктирования ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΎΠ±Ρ‰ΠΈΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π³ΠΈΠ±ΠΊΠΈΠΉ способ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ проСктирования. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ прСдставлСны ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ проСктирования ΠΈ ΠΈΡ… рСализация Π² C # ΠΈ .NET.

ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ Π½Π°Ρ‡ΠΈΠ½Π°Ρ‚ΡŒ с шаблонов проСктирования Π² .NET, Π΄Π°Π²Π°ΠΉΡ‚Π΅ разбСрСмся, Π² Ρ‡Π΅ΠΌ смысл шаблонов проСктирования ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ½ΠΈ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ.

Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ проСктирования Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния?

Π¨Π°Π±Π»ΠΎΠ½Ρ‹ проСктирования Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΌΠΈΡ€Π΅ — это ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ проСктирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ постоянно Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ.Π­Ρ‚ΠΎ шаблон ΠΈΠ»ΠΈ описаниС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ситуациях.

« Π¨Π°Π±Π»ΠΎΠ½ — это ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰Π΅Π΅ΡΡ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² контСкстС. »

« ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ шаблон описываСт ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ, которая Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ снова ΠΈ снова Π² нашСй срСдС, Π° Π·Π°Ρ‚Π΅ΠΌ описываСт ΡΡƒΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ этой ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ это Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠΈΠ»Π»ΠΈΠΎΠ½ Ρ€Π°Π·, Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ дСлая Π΅Π³ΠΎ Ρ‚ΠΎ ΠΆΠ΅ самоС. ΠΏΡƒΡ‚ΡŒ Π΄Π²Π°ΠΆΠ΄Ρ‹. «- ΠšΡ€ΠΈΡΡ‚ΠΎΡ„Π΅Ρ€ АлСксандр, Π―Π·Ρ‹ΠΊ шаблонов .

Π¨Π°Π±Π»ΠΎΠ½Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ для своих ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ² для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ своих ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π’Ρ‹Π±ΠΎΡ€ ΠΈ использованиС шаблона срСди Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… шаблонов проСктирования зависит ΠΎΡ‚ ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½Ρ‹Ρ… потрСбностСй ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π¨Π°Π±Π»ΠΎΠ½Ρ‹ проСктирования — ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. Π’Π°ΠΆΠ½ΠΎ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ проСктирования, Π° Π½Π΅ Π·Π°ΠΏΠΎΠΌΠΈΠ½Π°Ρ‚ΡŒ ΠΈΡ… классы, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ свойства. Π’Π°ΠΊΠΆΠ΅ Π²Π°ΠΆΠ½ΠΎ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ Π·Π°Π΄Π°Ρ‡Π°ΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΆΠ΅Π»Π°Π΅ΠΌΡ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ нСобходимая постоянная ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ° для использования ΠΈ примСнСния шаблонов проСктирования Π² повсСднСвной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.Π‘Π½Π°Ρ‡Π°Π»Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ проСктирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Π·Π°Ρ‚Π΅ΠΌ посмотритС, ΠΊΠ°ΠΊ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эти ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ шаблонов проСктирования, ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚Π΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ΡƒΡŽ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ проСктирования для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹.

БущСствуСт 23 шаблона проСктирования, Ρ‚Π°ΠΊΠΆΠ΅ извСстных ΠΊΠ°ΠΊ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ проСктирования Β«Π‘Π°Π½Π΄Π° Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ…Β» (GoF). Π‘Π°Π½Π΄Π° Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… являСтся Π°Π²Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΠΊΠ½ΠΈΠ³ΠΈ Β«ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ проСктирования: элСмСнты ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ использования». Π­Ρ‚ΠΈ 23 шаблона сгруппированы Π² Ρ‚Ρ€ΠΈ основныС ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ:

Π¨Π°Π±Π»ΠΎΠ½ Creational Design

  1. Factory Method
  2. Abstract Factory
  3. Builder
  4. ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ
  5. Singleton

Π¨Π°Π±Π»ΠΎΠ½Ρ‹ структурного проСктирования

  1. АдаптСр
  2. ΠœΠΎΡΡ‚
  3. Composite
  4. Decorator
  5. FaΓ§ade
  6. Flyweight
  7. Proxy

ΠŸΠΎΠ²Π΅Π΄Π΅Π½Ρ‡Π΅ΡΠΊΠΈΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ проСктирования

  1. Π¦Π΅ΠΏΠΎΡ‡ΠΊΠ° отвСтствСнности
  2. Command
  3. Interpreter
  4. Iterator
  5. Mediator
  6. Memento
  7. Observation
  8. Observation БтратСгия
  9. ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅Π»ΡŒ
  10. Π¨Π°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΈΠ·ΡƒΡ‡Π°Π΅ΠΌ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅ΠΌ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ творчСского проСктирования, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡƒ UML, исходный ΠΊΠΎΠ΄ шаблона ΠΈ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π½Π° C #.

Creational Design Patterns ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ способы создания экзСмпляров ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠΏΡ‹ связанных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π­Ρ‚ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ ΠΈΠΌΠ΅ΡŽΡ‚ Π΄Π΅Π»ΠΎ с процСссом создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΡ‚Π΄Π΅Π»Π΅Π½Ρ‹ ΠΎΡ‚ систСмы ΠΈΡ… Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. Π­Ρ‚ΠΎ обСспСчиваСт Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΈ принятии Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр для Π΄Π°Π½Π½ΠΎΠ³ΠΎ сцСнария. Π’Π°ΠΊΠΈΡ… ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΡΡ‚ΡŒ.

Абстрактная Ρ„Π°Π±Ρ€ΠΈΠΊΠ°

Π­Ρ‚ΠΎ создаСт Π½Π°Π±ΠΎΡ€ связанных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ»ΠΈ зависимых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².«БСмСйство» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², созданных Ρ„Π°Π±Ρ€ΠΈΠΊΠΎΠΉ, опрСдСляСтся Π²ΠΎ врСмя выполнСния Π² зависимости ΠΎΡ‚ Π²Ρ‹Π±ΠΎΡ€Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ„Π°Π±Ρ€ΠΈΡ‡Π½Ρ‹Ρ… классов.

Абстрактный шаблон Ρ„Π°Π±Ρ€ΠΈΠΊΠΈ дСйствуСт ΠΊΠ°ΠΊ супСрфабрика, которая создаСт Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ„Π°Π±Ρ€ΠΈΠΊΠΈ. Абстрактный интСрфСйс Ρ„Π°Π±Ρ€ΠΈΠΊΠΈ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° созданиС Π½Π°Π±ΠΎΡ€Π° связанных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΈΠ»ΠΈ зависимых ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Π±Π΅Π· указания ΠΈΡ… ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… классов.

На Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ классов UML Π½ΠΈΠΆΠ΅ описываСтся рСализация шаблона проСктирования абстрактной Ρ„Π°Π±Ρ€ΠΈΠΊΠΈ.

ΠšΠ»Π°ΡΡΡ‹, ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΈ интСрфСйсы, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π² ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ Π²Ρ‹ΡˆΠ΅ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ UML, описаны Π½ΠΈΠΆΠ΅.

  1. ΠšΠ»ΠΈΠ΅Π½Ρ‚

    Π­Ρ‚ΠΎΡ‚ класс ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ интСрфСйсы Абстрактная Ρ„Π°Π±Ρ€ΠΈΠΊΠ° ΠΈ Абстрактный ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ для создания сСмСйства связанных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

  2. Абстрактная Ρ„Π°Π±Ρ€ΠΈΠΊΠ°

    Π­Ρ‚ΠΎ интСрфСйс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ создаСт абстрактныС ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Ρ‹.

  3. Абстрактный ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚

    Π­Ρ‚ΠΎ интСрфСйс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚ Ρ‚ΠΈΠΏ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.

  4. Concrete Factory

    Π­Ρ‚ΠΎ класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ абстрактный интСрфСйс Ρ„Π°Π±Ρ€ΠΈΠΊΠΈ для создания ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ².

  5. ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚

    Π­Ρ‚ΠΎ класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ интСрфСйс абстрактного ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π° для создания ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ².

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΊΠΎΠ΄Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΊΠΎΠ΄ основного шаблона абстрактного шаблона проСктирования Ρ„Π°Π±Ρ€ΠΈΠΊΠΈ, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ с использованиСм C #:

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ шаблонС проСктирования абстрактной Ρ„Π°Π±Ρ€ΠΈΠΊΠΈ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ шаблона исходного ΠΊΠΎΠ΄Π° ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π° частных поля, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ содСрТат экзСмпляры абстрактных классов ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ². Доступ ΠΊ этим ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡ‚ΡŒΡΡ ΠΏΡƒΡ‚Π΅ΠΌ наслСдования интСрфСйса ΠΈΡ… Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса. ΠŸΡ€ΠΈ создании экзСмпляра ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Ρ„Π°Π±Ρ€ΠΈΠΊΠΈ пСрСдаСтся Π΅Π³ΠΎ конструктору ΠΈ заполняСт Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹Π΅ поля ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΈΠ»ΠΈ значСниями.

Abstractfactory — это Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс для ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ„Π°Π±Ρ€ΠΈΡ‡Π½Ρ‹Ρ… классов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ ΠΈΠ»ΠΈ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ Π½Π°Π±ΠΎΡ€ связанных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π­Ρ‚ΠΎΡ‚ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс содСрТит ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π±ΡƒΠ΄Π΅Ρ‚ создан. Π‘Π°Π·ΠΎΠ²Ρ‹ΠΉ класс объявлСн ΠΊΠ°ΠΊ абстрактный, поэтому ΠΎΠ½ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ унаслСдован Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌΠΈ Ρ„Π°Π±Ρ€ΠΈΡ‡Π½Ρ‹ΠΌΠΈ подклассами.

ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ классы Ρ„Π°Π±Ρ€ΠΈΠΊΠΈ Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ ΠΎΡ‚ класса Abstractfactory ΠΈ ΠΏΠ΅Ρ€Π΅ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ класса для создания Π½Π°Π±ΠΎΡ€Π° связанных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Ρ‚Ρ€Π΅Π±ΡƒΠ΅ΠΌΡ‹Ρ… ΠΊΠ»ΠΈΠ΅Π½Ρ‚ΠΎΠΌ. Π’ зависимости ΠΎΡ‚ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΈΠ»ΠΈ прилоТСния ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ΅ количСство ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… заводских классов.

Abstractproduct — это Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ класс для Ρ‚ΠΈΠΏΠΎΠ² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ„Π°Π±Ρ€ΠΈΡ‡Π½Ρ‹ΠΉ класс. Для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Ρƒ, Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½ Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ Ρ‚ΠΈΠΏ.

ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ классы ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΎΠ² Π½Π°ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ΡΡ ΠΎΡ‚ класса Abstractproduct. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ класс содСрТит ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. ΠžΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ этих классов Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ классами abstractfactory для заполнСния ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

Π Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ шаблона проСктирования абстрактной Ρ„Π°Π±Ρ€ΠΈΠΊΠΈ с использованиСм C #

Π’ качСствС ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π° рассмотрим систСму, которая выполняСт ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΡƒ ΠΈ доставку Ρ‚ΠΎΠ²Π°Ρ€ΠΎΠ² для ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚-ΠΌΠ°Π³Π°Π·ΠΈΠ½Π°. Компания поставляСт Π΄Π²Π° Π²ΠΈΠ΄Π° ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ†ΠΈΠΈ.ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ — это стандартный Ρ‚ΠΎΠ²Π°Ρ€, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ помСщаСтся Π² ΠΊΠΎΡ€ΠΎΠ±ΠΊΡƒ ΠΈ доставляСтся ΠΏΠΎ ΠΏΠΎΡ‡Ρ‚Π΅ с простой этикСткой. Π’Ρ‚ΠΎΡ€ΠΎΠΉ — Ρ…Ρ€ΡƒΠΏΠΊΠΈΠΉ ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ ΡƒΠ΄Π°Ρ€ΠΎΠΏΡ€ΠΎΡ‡Π½ΠΎΠΉ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΈ доставляСтся ΠΊΡƒΡ€ΡŒΠ΅Ρ€ΠΎΠΌ.

Π’ этой ситуации Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Π΄Π²Π° Ρ‚ΠΈΠΏΠ° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²: ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ доставки. ΠœΡ‹ ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²Π΅ Ρ„Π°Π±Ρ€ΠΈΠΊΠΈ для создания этих связанных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Одна Ρ„Π°Π±Ρ€ΠΈΠΊΠ° Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π·Π° созданиС ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² доставки для стандартных посылок.Π’Ρ‚ΠΎΡ€ΠΎΠΉ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΡ‚Π²Π΅Ρ‡Π°Ρ‚ΡŒ Π·Π° созданиС ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠΈ ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² доставки для Ρ…Ρ€ΡƒΠΏΠΊΠΈΡ… посылок.

Класс ΠšΠ»ΠΈΠ΅Π½Ρ‚

Абстрактная фабричная Ρ„ΠΎΡ€ΠΌΠ° шаблонов

Π’Ρ‹Ρ…ΠΎΠ΄

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠ΄Π° ΡΠΎΠ·Π΄Π°ΡŽΡ‚ΡΡ Π΄Π²Π° клиСнтских ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ свой Ρ‚ΠΈΠΏ конструктора Ρ„Π°Π±Ρ€ΠΈΠΊΠΈ. Доступ ΠΊ Ρ‚ΠΈΠΏΠ°ΠΌ сгСнСрированных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² осущСствляСтся Ρ‡Π΅Ρ€Π΅Π· свойства ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

ΠŸΡ€ΠΈΠΌΠ΅Ρ‡Π°Π½ΠΈΠ΅

ΠŸΡ€ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ абстрактных Ρ„Π°Π±Ρ€ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ΠΎΠ² Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ вопрос: Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ классы? Π― ΠΏΠΎΠ³ΡƒΠ³Π»ΠΈΠ», ΠΈ Π²ΠΎΡ‚ ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° ΠΌΠΎΠΉ вопрос.

ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΉ класс — это Π½Π΅ Ρ‡Ρ‚ΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹ΠΉ класс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ всС основныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ класса, Ρ‚Π°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅, ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, конструкторы ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр класса Π² Π΄Ρ€ΡƒΠ³ΠΈΡ… классах.

Π¨Π°Π±Π»ΠΎΠ½ проСктирования Singleton

Π¨Π°Π±Π»ΠΎΠ½ проСктирования Singleton — ΠΎΠ΄ΠΈΠ½ ΠΈΠ· самых простых шаблонов проСктирования. Π­Ρ‚ΠΎΡ‚ шаблон Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Ρƒ класса Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ экзСмпляр, ΠΈ обСспСчиваСт Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ доступа ΠΊ Π½Π΅ΠΌΡƒ. Π¨Π°Π±Π»ΠΎΠ½ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ³Π΄Π°-Π»ΠΈΠ±ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ создан Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠ³ΠΎ класса. ВсС дальнСйшиС ссылки Π½Π° ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ одноэлСмСнтного класса относятся ΠΊ Ρ‚ΠΎΠΌΡƒ ΠΆΠ΅ Π±Π°Π·ΠΎΠ²ΠΎΠΌΡƒ экзСмпляру.

Π’ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ Π±Ρ‹Π²Π°ΡŽΡ‚ ситуации, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π±Ρ‹Π» создан ΠΈ прСдоставлСн ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°ΠΌ. Ни ΠΎΠ΄ΠΈΠ½ ΠΊΠ»ΠΈΠ΅Π½Ρ‚ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ экзСмпляр ΠΈΠ·Π²Π½Π΅. Π­Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ умСстно, Ρ‡Π΅ΠΌ созданиС глобальной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ скопирована ΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Ρ‚ ΠΊ мноТСству Ρ‚ΠΎΡ‡Π΅ΠΊ доступа.

На Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ΅ классов UML Π½ΠΈΠΆΠ΅ описана рСализация шаблона проСктирования абстрактной Ρ„Π°Π±Ρ€ΠΈΠΊΠΈ:

Π’ ΡˆΠ°Π±Π»ΠΎΠ½Π°Ρ… singleton Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° UML Π½Π°Π΄ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ GetInstace Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Ρ‚ΡŒ объявлСна ​​как статичСская. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ СдинствСнный экзСмпляр, хранящийся Π² частной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ «экзСмпляра». Π’ шаблонС singleton всС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ экзСмпляры ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Ρ‹ ΠΊΠ°ΠΊ статичСскиС. ΠšΠ»ΡŽΡ‡Π΅Π²ΠΎΠ΅ слово static Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ создан Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ экзСмпляр ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°, ΠΈ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ класса Π±Π΅Π· создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

ΠšΠΎΠ½ΡΡ‚Ρ€ΡƒΠΊΡ‚ΠΎΡ€ класса ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½ ΠΊΠ°ΠΊ Π·Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ. Π­Ρ‚ΠΎ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ созданиС Π½ΠΎΠ²Ρ‹Ρ… экзСмпляров внСшними классами. Класс Ρ‚Π°ΠΊΠΆΠ΅ Π·Π°ΠΏΠ΅Ρ‡Π°Ρ‚Π°Π½ для прСдотвращСния наслСдования, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ созданию подкласса, Π½Π°Ρ€ΡƒΡˆΠ°ΡŽΡ‰Π΅ΠΌΡƒ ΠΏΡ€Π°Π²ΠΈΠ»Π° синглтона.

Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΊΠΎΠ΄Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΊΠΎΠ΄ основного шаблона одноэлСмСнтного шаблона проСктирования, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ с использованиСм C #.

Активная инициализация одноэлСмСнтного шаблона

ЛСнивая инициализация одноэлСмСнтного шаблона

ΠŸΠΎΡ‚ΠΎΠΊΠΎΠ±Π΅Π·ΠΎΠΏΠ°ΡΠ½Π°Ρ (Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠ° с Π΄Π²ΠΎΠΉΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΎΠΉ) инициализация одноэлСмСнтного шаблона

Π’ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΌ Π²Ρ‹ΡˆΠ΅ ΠΊΠΎΠ΄Π΅ ΠΏΠΎΠΊΠ°Π·Π°Π½ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Β«lockThisΒ» ΠΈ использованиС Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²ΠΊΠΈ Π² ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Β«GetInstanceΒ».ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΌΠ½ΠΎΠ³ΠΎΠΏΠΎΡ‚ΠΎΡ‡Π½Ρ‹ΠΌΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Ρ‡Ρ‚ΠΎ Π΄Π²Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° ΠΌΠΎΠ³ΡƒΡ‚ Π·Π°ΠΏΡ€ΠΎΡΠΈΡ‚ΡŒ синглтон Π΄ΠΎ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ экзСмпляра. Если Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ„ΠΈΠΊΡ‚ΠΈΠ²Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ lockThis, всС Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π·Π°Π±Π»ΠΎΠΊΠΈΡ€ΠΎΠ²Π°Π½Ρ‹. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π΄Π²Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° Π½Π΅ смогут ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ свои собствСнныС ΠΊΠΎΠΏΠΈΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°.

Π Π΅Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ шаблона проСктирования абстрактной Ρ„Π°Π±Ρ€ΠΈΠΊΠΈ с использованиСм C # .net

Π― ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ этот шаблон Π² своСм ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ, Π³Π΄Π΅ я Ρ…ΠΎΡ‡Ρƒ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ состояниС прилоТСния для ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ для Π²Ρ…ΠΎΠ΄Π° Π² систСму ΠΈ любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, которая трСбуСтся ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΈ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² ΠΎΠ΄Π½ΠΎΠΌ экзСмплярС.

Класс ApplicationState

Π€ΠΎΡ€ΠΌΠ° шаблона Singleton

Π’Ρ‹Ρ…ΠΎΠ΄

ΠŸΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° создаСт Π΄Π²Π΅ Π½ΠΎΠ²Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈ присваиваСт ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· Π½ΠΈΡ… Π²ΠΎΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΠ΅ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° GetState. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ΠΈ ΡΡ€Π°Π²Π½ΠΈΠ²Π°ΡŽΡ‚ΡΡ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΎΠ±Π° содСрТат ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ значСния ΠΈ ссылку Π½Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚.

Вопросы Π½Π° собСсСдовании

РСзюмС

Π― надСюсь, Ρ‡Ρ‚ΠΎ эта ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΠΎΠ·Π½Π°ΠΊΠΎΠΌΠΈΡ‚ вас с шаблонами проСктирования ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹ΠΌΠΈ Ρ‚ΠΈΠΏΠ°ΠΌΠΈ шаблонов проСктирования, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π². Π‘Π΅Ρ‚ΡŒ.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ ΠΈΠ·ΡƒΡ‡ΠΈΠ»ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ проСктирования Abstract Factory ΠΈ Singleton. ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ Π³Ρ€ΡƒΠΏΠΏΡ‹ Creational Design Pattern Group Π±ΡƒΠ΄ΡƒΡ‚ ΠΎΠ±ΡŠΡΡΠ½Π΅Π½Ρ‹ Π² ΠΌΠΎΠ΅ΠΉ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΡΡ‚Π°Ρ‚ΡŒΠ΅.

Π Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Π΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ

Π’ΠΎΡ‚ список Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π½Π°ΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΠ΅ΠΌΡ‹Ρ… статСй, связанных с шаблонами проСктирования.

ΠŸΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ проСктирования

Π’ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΉ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΠΈ
Π¨Π°Π±Π»ΠΎΠ½ проСктирования — это ΠΎΠ±Ρ‰Π΅Π΅ повторяСмоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ часто Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰Π΅ΠΉΡΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.Π¨Π°Π±Π»ΠΎΠ½ проСктирования — это Π½Π΅ Π·Π°ΠΊΠΎΠ½Ρ‡Π΅Π½Π½Ρ‹ΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ нСпосрСдствСнно Π² ΠΊΠΎΠ΄. Π­Ρ‚ΠΎ описаниС ΠΈΠ»ΠΈ шаблон Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ситуациях.

ИспользованиС шаблонов дизайна

Π¨Π°Π±Π»ΠΎΠ½Ρ‹ проСктирования ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΡΠΊΠΎΡ€ΠΈΡ‚ΡŒ процСсс Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, прСдоставляя ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Π΅, ΠΏΡ€ΠΎΠ²Π΅Ρ€Π΅Π½Π½Ρ‹Π΅ ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΡ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. Π­Ρ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½Ρ‹ΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ рассмотрСния ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ ΠΏΡ€ΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Π΄ΠΎ ΠΊΠΎΠ½Ρ†Π° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ. ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС шаблонов проСктирования ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Ρ‚ΠΎΠ½ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹Π·Π²Π°Ρ‚ΡŒ ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹, ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Π΅Ρ‚ Ρ‡ΠΈΡ‚Π°Π΅ΠΌΠΎΡΡ‚ΡŒ ΠΊΠΎΠ΄Π° для программистов ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ², Π·Π½Π°ΠΊΠΎΠΌΡ‹Ρ… с шаблонами.

Часто люди ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ, ΠΊΠ°ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ проСктирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΊ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°ΠΌ. Π­Ρ‚ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ‚Ρ€ΡƒΠ΄Π½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊ Π±ΠΎΠ»Π΅Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎΠΌΡƒ ΠΊΡ€ΡƒΠ³Ρƒ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ. Π¨Π°Π±Π»ΠΎΠ½Ρ‹ проСктирования ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΠΎΠ±Ρ‰ΠΈΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π΅ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ спСцифики, привязанной ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ΅.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ ΠΎΠ±Ρ‰Π°Ρ‚ΡŒΡΡ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ…ΠΎΡ€ΠΎΡˆΠΎ извСстныС ΠΈ понятныС ΠΈΠΌΠ΅Π½Π° для взаимодСйствия с ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½Ρ‹ΠΌ обСспСчСниСм. ΠžΠ±Ρ‰ΠΈΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ проСктирования ΠΌΠΎΠΆΠ½ΠΎ со Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ‚ΡŒ, дСлая ΠΈΡ… Π±ΠΎΠ»Π΅Π΅ Π½Π°Π΄Π΅ΠΆΠ½Ρ‹ΠΌΠΈ, Ρ‡Π΅ΠΌ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ конструкции.

Π¨Π°Π±Π»ΠΎΠ½Ρ‹ проСктирования для создания

Π­Ρ‚ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ проСктирования ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Ρ‹ для создания экзСмпляров классов. Π­Ρ‚ΠΎΡ‚ шаблон ΠΌΠΎΠΆΠ½ΠΎ Π΄Π°Π»Π΅Π΅ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ создания классов ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ². Π’ Ρ‚ΠΎ врСмя ΠΊΠ°ΠΊ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ создания классов эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ наслСдованиС Π² процСссС создания экзСмпляров, ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² эффСктивно ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ Π΄Π΅Π»Π΅Π³ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для выполнСния Ρ€Π°Π±ΠΎΡ‚Ρ‹.

  • Абстрактная Ρ„Π°Π±Ρ€ΠΈΠΊΠ°
    Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ экзСмпляры Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… сСмСйств классов
  • Builder
    ΠžΡ‚Π΄Π΅Π»ΡΠ΅Ρ‚ построСниС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΎΡ‚ Π΅Π³ΠΎ прСдставлСния
  • Заводской ΠΌΠ΅Ρ‚ΠΎΠ΄
    Π‘ΠΎΠ·Π΄Π°Π΅Ρ‚ экзСмпляр Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½Ρ‹Ρ… классов
  • ΠŸΡƒΠ» ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²
    Π˜Π·Π±Π΅Π³Π°ΠΉΡ‚Π΅ дорогостоящСго приобрСтСния ΠΈ высвобоТдСния рСсурсов ΠΏΡƒΡ‚Π΅ΠΌ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ³ΠΎ использования ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ большС Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ
  • ΠŸΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ
    ΠŸΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ экзСмпляр для копирования ΠΈΠ»ΠΈ клонирования
  • Singleton
    Класс, ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ экзСмпляр

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ проСктирования

ВсС эти ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ проСктирования ΠΊΠ°ΡΠ°ΡŽΡ‚ΡΡ ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ классов ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ создания классов ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ наслСдованиС для создания интСрфСйсов. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π½Ρ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‚ способы ΠΊΠΎΠΌΠΏΠΎΠ½ΠΎΠ²ΠΊΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² для получСния Π½ΠΎΠ²Ρ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ.

  • АдаптСр
    БопоставлСниС интСрфСйсов Ρ€Π°Π·Π½Ρ‹Ρ… классов
  • ΠœΠΎΡΡ‚
    ΠžΡ‚Π΄Π΅Π»ΡΠ΅Ρ‚ интСрфСйс ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΎΡ‚ Π΅Π³ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ.
  • Боставной
    ДрСвовидная структура простых ΠΈ составных ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².
  • Decorator
    ДинамичСскоС Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ обязанностСй ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌ
  • Ѐасад
    Один класс, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ всю подсистСму
  • ЛСгковСс
    ΠœΠ΅Π»ΠΊΠΎΠ·Π΅Ρ€Π½ΠΈΡΡ‚Ρ‹ΠΉ экзСмпляр, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ для эффСктивного ΠΎΠ±ΠΌΠ΅Π½Π°
  • Π”Π°Π½Π½Ρ‹Π΅ частного класса
    ΠžΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ доступ ΠΊ срСдствам доступа / ΠΌΡƒΡ‚Π°Ρ‚ΠΎΡ€Π°ΠΌ

  • ΠŸΡ€ΠΎΠΊΡΠΈ
    ΠžΠ±ΡŠΠ΅ΠΊΡ‚, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚

ΠŸΠΎΠ²Π΅Π΄Π΅Π½Ρ‡Π΅ΡΠΊΠΈΠ΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ проСктирования

ВсС эти ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ проСктирования связаны с взаимодСйствиСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² Class.ΠŸΠΎΠ²Π΅Π΄Π΅Π½Ρ‡Π΅ΡΠΊΠΈΠ΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹ — это Ρ‚Π΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ связаны с ΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅ΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ.

  • Π¦Π΅ΠΏΠΎΡ‡ΠΊΠ° отвСтствСнности
    Бпособ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ запроса ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΎΠΉ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²
  • Команда
    Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ запрос ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΊΠ°ΠΊ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚
  • Π˜Π½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚Π°Ρ‚ΠΎΡ€
    Бпособ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ языковых элСмСнтов Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ
  • Π˜Ρ‚Π΅Ρ€Π°Ρ‚ΠΎΡ€
    ΠŸΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ доступ ΠΊ элСмСнтам ΠΊΠΎΠ»Π»Π΅ΠΊΡ†ΠΈΠΈ
  • ΠŸΠΎΡΡ€Π΅Π΄Π½ΠΈΠΊ
    ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ ΡƒΠΏΡ€ΠΎΡ‰Π΅Π½Π½ΠΎΠ΅ взаимодСйствиС ΠΌΠ΅ΠΆΠ΄Ρƒ классами
  • Memento
    Π—Π°Ρ…Π²Π°Ρ‚ ΠΈ восстановлСниС Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π³ΠΎ состояния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°
  • НулСвой ΠΎΠ±ΡŠΠ΅ΠΊΡ‚
    ΠŸΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для использования Π² качСствС значСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΠΎ ΡƒΠΌΠΎΠ»Ρ‡Π°Π½ΠΈΡŽ.
  • Observer
    Бпособ увСдомлСния ΠΎΠ± ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ ряда классов
  • БостояниС
    ИзмСнСниС повСдСния ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° ΠΏΡ€ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Π΅Π³ΠΎ состояния

  • БтратСгия
    Π˜Π½ΠΊΠ°ΠΏΡΡƒΠ»ΠΈΡ€ΡƒΠ΅Ρ‚ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ класса
  • Π¨Π°Π±Π»ΠΎΠ½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄
    ΠžΡ‚Π»ΠΎΠΆΠΈΡ‚ΡŒ Ρ‚ΠΎΡ‡Π½Ρ‹Π΅ шаги Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π° подкласс
  • ΠŸΠΎΡΠ΅Ρ‚ΠΈΡ‚Π΅Π»ΡŒ
    ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ Π½ΠΎΠ²ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ для класса Π±Π΅Π·

10 Π»ΡƒΡ‡ΡˆΠΈΡ… вопросов Π½Π° собСсСдовании ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ проСктирования C # {ОбновлСно для 2020 Π³. }

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ Π² шаблон проСктирования C # Вопросы ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° собСсСдовании

Π¨Π°Π±Π»ΠΎΠ½Ρ‹ проСктирования

— это Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ проСктирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.Часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ шаблонов проСктирования. C # — это ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ язык, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ вмСстС с ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠΎΠΉ .NET. Π¨Π°Π±Π»ΠΎΠ½Ρ‹ проСктирования — это Π»ΡƒΡ‡ΡˆΠΈΠ΅ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠΈ для поиска Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ слоТных извСстных ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Ρ… ΠΈΠ»ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. Π­Ρ‚ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ ΠΌΠ½ΠΎΠ³ΠΈΠΌΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ многочислСнных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΏΡ€ΠΎΠ± ΠΈ ошибок, с Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ для получСния эффСктивных Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ.Π―Π·Ρ‹ΠΊ программирования C # эффСктивСн с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния памяти ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ языками.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ, Ссли Π²Ρ‹ ΠΈΡ‰Π΅Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρƒ, ΡΠ²ΡΠ·Π°Π½Π½ΡƒΡŽ с шаблоном проСктирования C #, Π²Π°ΠΌ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΡ‚ΡŒΡΡ ΠΊ вопросам собСсСдования ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ проСктирования C # 2020. Π­Ρ‚ΠΎ ΠΏΡ€Π°Π²Π΄Π°, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ собСсСдованиС отличаСтся Π² зависимости ΠΎΡ‚ профиля Ρ€Π°Π±ΠΎΡ‚Ρ‹. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ ΠΏΠΎΠ΄Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ»ΠΈ Π²Π°ΠΆΠ½Ρ‹Π΅ вопросы ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° собСсСдованиС ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ проСктирования C #, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π²Π°ΠΌ Π΄ΠΎΠ±ΠΈΡ‚ΡŒΡΡ успСха Π½Π° собСсСдовании.

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ вопросов для собСсСдования с шаблоном проСктирования C # 2020 ΠΌΡ‹ прСдставим 10 Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Ρ… ΠΈ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… вопросов для собСсСдования с шаблоном проСктирования C #.Π­Ρ‚ΠΈ вопросы Ρ€Π°Π·Π΄Π΅Π»Π΅Π½Ρ‹ Π½Π° Π΄Π²Π΅ части:

Π§Π°ΡΡ‚ΡŒ 1. Вопросы для собСсСдования с шаблоном проСктирования C # (Π±Π°Π·ΠΎΠ²Ρ‹ΠΉ)

Π’ этой ΠΏΠ΅Ρ€Π²ΠΎΠΉ части Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ основныС вопросы ΠΈ ΠΎΡ‚Π²Π΅Ρ‚Ρ‹ Π½Π° собСсСдованиС ΠΏΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρƒ проСктирования C #

Q1. Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΡƒΠ·ΠΎΡ€Ρ‡Π°Ρ‚Ρ‹ΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΈ ΠΎΠ±ΡŠΡΡΠ½ΠΈΡ‚Π΅ Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅?

ΠžΡ‚Π²Π΅Ρ‚:
Π¨Π°Π±Π»ΠΎΠ½Ρ‹ проСктирования — это эффСктивныС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ проСктирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. ΠžΠ±Ρ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ ΠΏΡƒΡ‚Π΅ΠΌ примСнСния этих шаблонов проСктирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π»ΡƒΡ‡ΡˆΠΈΠΌΠΈ ΠΏΡ€Π°ΠΊΡ‚ΠΈΠΊΠ°ΠΌΠΈ для получСния эффСктивных Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ слоТных извСстных ΠΈ распространСнных ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² Π·Π°Π΄Π°Ρ‡Π°Ρ… проСктирования Π² процСссах проСктирования ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния. Π­Ρ‚ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π½Ρ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ для Ρ‚ΠΈΠΏΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π±Ρ‹Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ послС выполнСния Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ…

Π¨Π°Π±Π»ΠΎΠ½ проСктирования Blackboard: ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ C # — БистСма Π·Π°Ρ‰ΠΈΡ‚Ρ‹ ΠΎΡ‚ Ρ€Π°Π΄ΠΈΠΎΠ»ΠΎΠΊΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… сигналов — Π‘Ρ‚Π°Ρ‚ΡŒΠΈ TechNet — БША (английский)


Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ прСдставлСн ΠΏΡ€ΠΈΠΌΠ΅Ρ€ WPF C # шаблона проСктирования Blackboard, доступный Π² Π³Π°Π»Π΅Ρ€Π΅Π΅ TechNet.

http://gallery.technet.microsoft.com/Blackboard-Design-Pattern-13a35a7e

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ шаблона проСктирования, ΠΏΠΎΠ΄Ρ‡Π΅Ρ€ΠΊΠΈΠ²Π°ΡŽΡ‰ΠΈΠΉ интСрСсныС ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² C # ΠΈ WPF.

Π¨Π°Π±Π»ΠΎΠ½ Blackboard — это

шаблон проСктирования, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠΎΠΎΡ€Π΄ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅, Ρ€Π°Π·Ρ€ΠΎΠ·Π½Π΅Π½Π½Ρ‹Π΅ систСмы, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ вмСстС ΠΈΠ»ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, постоянно мСняя Ρ†ΠΈΠΊΠ» ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΉ ΠΈ дСйствий.

Доска состоит ΠΈΠ· ряда Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰ ΠΈΠ»ΠΈ Β«Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…Β». Π­Ρ‚ΠΎ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΉ сообщСний, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹Π΅ процСссы. Β«ΠšΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Β» отслСТиваСт свойства Π½Π° доскС ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ «Знания»
Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊΠΈ «Ρ€Π°ΡΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠΎ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π°ΠΌ.

Когда я Π±Ρ‹Π» студСнтом, моя ΡΡ‚Ρ€Π°ΡΡ‚ΡŒ ΠΊ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»Π° ΠΌΠΎΠ΅ΠΌΡƒ послСднСму Π³ΠΎΠ΄Ρƒ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ спонсорскоС финансированиС Π² ΠΊΠΎΠ»Π»Π΅Π΄ΠΆΠ΅, Π° Π·Π°Ρ‚Π΅ΠΌ Π΄Π²Π° Π³ΠΎΠ΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π·ΠΎΠ»ΠΎΡ‚Ρ‹Π΅ Π½Π°Ρ€ΡƒΡ‡Π½ΠΈΠΊΠΈ ΠΎΡ‚ ΠœΠ°Ρ€ΠΊΠΎΠ½ΠΈ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, ΠΏΠ΅Ρ€Π²Ρ‹Π΅ ΠΏΡΡ‚ΡŒ Π»Π΅Ρ‚ ΠΌΠΎΠ΅ΠΉ ΠΊΠ°Ρ€ΡŒΠ΅Ρ€Ρ‹ ΠΏΠΎΠ³Ρ€ΡƒΠ·ΠΈΠ»ΠΈ мСня Π² Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠΉ ΠΊΠΎΠ½Π΅Ρ† Π²ΠΎΠ΅Π½Π½Ρ‹Ρ… Ρ€Π°Π΄Π°Ρ€ΠΎΠ² ΠΈ граТданской Π°Π²ΠΈΠ°Ρ†ΠΈΠΈ. На
врСмя, я Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ Ρ†Π΅Π½ΠΈΠ», Ρ‡Ρ‚ΠΎ стойки, Π½Π°Π΄ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ я Ρ€Π°Π±ΠΎΡ‚Π°Π», Π±Ρ‹Π»ΠΈ самыми ΠΏΡ€ΠΎΠ΄Π²ΠΈΠ½ΡƒΡ‚Ρ‹ΠΌΠΈ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Π°ΠΌΠΈ Π² ΠΌΠΈΡ€Π΅. Π­Ρ‚ΠΎ Π±Ρ‹Π» самый Ρ€Π°Π½Π½ΠΈΠΉ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ Π³Ρ€ΠΈΠ΄-вычислСний. ΠœΠΈΠΊΡ€ΠΎΡΡ…Π΅ΠΌΡ‹ физичСской ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, каТдая ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅Ρ‚ свою Ρ‡Π°ΡΡ‚ΡŒ спСктра Π² Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… измСрСниях.Π’
Ρ‡Π΅Ρ‚Π²Π΅Ρ€Ρ‚Ρ‹ΠΉ — ΠΌΠ΅Π»ΠΊΠΈΠ΅ частицы Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ.

Цифровая ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΡ Ρ‡Π΅Ρ€Π΅Π·
Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΌΠ°ΡˆΠΈΠ½Ρ‹,
VMSS,
Service Fabric,
SF Mesh,
ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Ρ‹,
Kubernetes ΠΈ
AKS всСгда Π²Ρ‹Π·Ρ‹Π²Π°Π» Ρƒ мСня особый интСрСс. Мои самыС Ρ€Π°Π½Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π³Ρ€ΠΈΠ΄-вычислСний (с Ρ€Π°Π΄Π°Ρ€Π° 1980-Ρ… Π³ΠΎΠ΄ΠΎΠ²) Π·Π°Π½ΠΈΠΌΠ°Π»ΠΈ Π³Ρ€ΡƒΠ·ΠΎΠ²ΠΈΠΊ ΠΈΠ»ΠΈ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ ΠΊΠΎΠΌΠ½Π°Ρ‚Ρƒ. Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ пространство, Π·Π°ΠΏΠΎΠ»Π½Π΅Π½Π½ΠΎΠ΅ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Π°ΠΌΠΈ — сотни / тысячи ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ соСдинСнных процСссоров, ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ
называСтся
Ρ‚Ρ€Π°Π½ΡΠΏΡŒΡŽΡ‚Π΅Ρ€Ρ‹.

↑
Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ


Π—Π°Π΄Π°Ρ‡Π° принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ [ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎ ΠΎ ΠΆΠΈΠ·Π½ΠΈ ΠΈ смСрти] Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π±Ρ‹Π»Π° двоякой:

1) ΠŸΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΎΠ²Ρ‹Ρ… Ρ€Π°Π΄ΠΈΠΎΠ΄Π°Π½Π½Ρ‹Ρ… Π² Ρ†ΠΈΡ„Ρ€ΠΎΠ²Ρ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅ ΠΈ быстрыС

2) АнализируйтС Π΄Π°Π½Π½Ρ‹Π΅ шаблона, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ быстрСС ΠΈ Ρ‚ΠΎΡ‡Π½Π΅Π΅

Если ΡƒΡ‡Π΅ΡΡ‚ΡŒ количСство ΠΊΠΎΠΌΠ±ΠΈΠ½Π°Ρ†ΠΈΠΉ частот сигналов ΠΈ гранулярностСй, Π΄Π°Π½Π½Ρ‹Π΅ Ρ€Π°Π΄Π°Ρ€Π° бСсконСчно Π²Π΅Π»ΠΈΠΊΠΈ.ΠœΡ‹ использовали спСциализированный язык, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ RTL2. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΠ»ΠΎ
Π½Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π²ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π² ΠΊΠΎΠ΄ «вставки машинного ΠΊΠΎΠ΄Π°Β» M68000 — Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Ρ‹ созданного Π²Ρ€ΡƒΡ‡Π½ΡƒΡŽ исходного машинного ΠΊΠΎΠ΄Π°.

Когда Π²Ρ‹ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚Π΅ ΠΏΠΎΡ‡Ρ‚ΠΈ Π² Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, каТдая инструкция Π½Π°
Ρ†ΠΈΠΊΠ» процСссора подсчитан. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΌΡ‹ писали Π½Π° чистом машинном языкС, Π° Π½Π΅ позволяли компилятору ΠΈΠ½Ρ‚Π΅Ρ€ΠΏΡ€Π΅Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ сцСнарий Π² ΠΎΠ±Ρ‰ΠΈΠ΅ Π½Π°Π±ΠΎΡ€Ρ‹ инструкций. ΠžΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Ρ‰ΠΈΠΊ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΈΡΠ°Ρ‚ΡŒ собствСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ быстрСС, Ρ‡Π΅ΠΌ любой ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, созданный компилятором.

Π‘ΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π°Π½Π°Π»ΠΈΠ·Π° проистСкаСт ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΠΎΡΠ²Π»ΡΡŽΡ‰ΠΈΡ…ΡΡ Π΄Π°Π½Π½Ρ‹Ρ… Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎ ΠΌΠΎΠ·Π³Ρƒ. Π­Ρ‚ΠΎ Π±Ρ‹Π» постоянный цикличСский процСсс ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ ΠΈ взвСшСнного консСнсуса всС Π±ΠΎΠ»Π΅Π΅ Ρ‚ΠΎΡ‡Π½Ρ‹Ρ… ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ (с Π»ΡƒΡ‡ΡˆΠΈΠΌ Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ). Π­Ρ‚ΠΎ заняло сотни
Ρ‚Ρ€Π°Π½ΡΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ², Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… вмСстС для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Β«Π³Ρ€Π΅Π±Π΅Π½ΠΊΠΈΒ» Ρ‡Π΅Ρ€Π΅Π· ΠΎΡ‚Ρ€Π΅Π·ΠΎΠΊ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ. Π—Π°Ρ‚Π΅ΠΌ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π°Ρ… дальнСйшиС Π³Ρ€Π΅Π±Π½ΠΈ (срСзы Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ³ΠΎ ΠΎΠΊΠ½Π°) добавляли Π±ΠΎΠ»Π΅Π΅ Π΄Π΅Ρ‚Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ, заполняя
Π² ΠΏΡ€ΠΎΠΌΠ΅ΠΆΡƒΡ‚ΠΊΠ°Ρ… для увСличСния Ρ€Π°Π·Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

По ΠΌΠ΅Ρ€Π΅ Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ изобраТСния становятся Π±ΠΎΠ»Π΅Π΅ Ρ‡Π΅Ρ‚ΠΊΠΈΠΌΠΈ, ΠΎΠ½ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ ΠΈ ΠΎΡ†Π΅Π½Π΅Π½Ρ‹. Когда ΠΏΠΎΡΠ²Π»ΡΡŽΡ‚ΡΡ закономСрности, ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΡΡ‚ΡŒ Π½Π° соотвСтствиС извСстным шаблонам, ΠΏΠΎΠΊΠ° Π½Π΅ останСтся нСбольшой Π½Π°Π±ΠΎΡ€ возмоТностСй. Π—Π°Ρ‚Π΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ процСссы ΠΌΠΎΠ³Π»ΠΈ Π±Ρ‹ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ Π΄Π°Π½Π½Ρ‹Π΅ дальшС, ΠΏΠΎΠΊΠ° Ρ‚ΠΎΠ»ΡŒΠΊΠΎ
ΠΎΡΡ‚Π°Π»Π°ΡΡŒ ΠΎΠ΄Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ. Или ΠΊΠΎΠ³Π΄Π° Π±Ρ‹Π» достигнут консСнсус ΠΌΠ΅ΠΆΠ΄Ρƒ нСсколькими участниками (Π±Π°Π·Π°ΠΌΠΈ Π·Π½Π°Π½ΠΈΠΉ). НаконСц, Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ. ДСйствиС ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΡƒΠΏΡ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ΠΌ ΠΈΠ»ΠΈ ΠΈΠ½Π΄ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ Π½Π° Π²Ρ‹Ρ…ΠΎΠ΄Π½ΠΎΠΉ консоли, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΌ самолСт Π½Π° Π΅Π³ΠΎ Ρ‚Ρ€Π°Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ ΠΏΠΎΠ»Π΅Ρ‚Π°, прСдупрСТдСния ΠΎ столкновСнии,
прСдупрСТдСния ΠΎΠ± ΡƒΠ³Ρ€ΠΎΠ·Π°Ρ… ΠΈ Ρ‚. Π΄.

Π­Ρ‚ΠΎ, ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎ, ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Π½Π° шаблон Blackboard, поэтому я Ρ€Π΅ΡˆΠΈΠ» ΠΏΠΎΠ΄Π΅Π»ΠΈΡ‚ΡŒΡΡ с Π²Π°ΠΌΠΈ этим ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΡ€ΠΎΠ΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ.

http://gallery.technet.microsoft.com/Blackboard-Design-Pattern-13a35a7e

↑
Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ


Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ запускаСтся Π² Ρ†ΠΈΠΊΠ»Π΅, пСрСбирая всС Π°ΠΊΡ‚ΠΈΠ²Π½Ρ‹Π΅ источники Π·Π½Π°Π½ΠΈΠΉ ΠΈ выполняя ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ….

Π¨Π°Π±Π»ΠΎΠ½ Blackboard опрСдСляСт ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ ΠΊΠ°ΠΊ Π»ΠΈΡ†ΠΎ, ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‰Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅, Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‰Π΅Π΅, ΠΊΠ°ΠΊΠΎΠΉ Β«Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ Π·Π½Π°Π½ΠΈΠΉΒ» Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ ΠΈ Π² ΠΊΠ°ΠΊΠΎΠΌ порядкС.Π’ этом ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π΅ это прСдставлСно просто пСрСчислСниСм Β«PriorityΒ», ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ упорядочиваСт источники Π·Π½Π°Π½ΠΈΠΉ. НапримСр Β«WarMachineΒ»
источник Π·Π½Π°Π½ΠΈΠΉ являСтся Π½Π°ΠΈΠ²Ρ‹ΡΡˆΠΈΠΌ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΎΠΌ ΠΈ выполняСтся Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, поэтому Π»ΡŽΠ±Ρ‹Π΅ извСстныС ΡƒΠ³Ρ€ΠΎΠ·Ρ‹ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ Π΄ΠΎ принятия ΠΊΠ°ΠΊΠΈΡ…-Π»ΠΈΠ±ΠΎ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ.

Π’ шаблонС Blackboard ΡƒΠΊΠ°Π·Π°Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ источник Π·Π½Π°Π½ΠΈΠΉ ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π΄Π΅ΠΊΠ»Π°Ρ€Π°Ρ†ΠΈΡŽ, доступСн Π»ΠΈ ΠΎΠ½ для Ρ‚Π΅ΠΊΡƒΡ‰Π΅Π³ΠΎ состояния Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹. ЀактичСски это ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½Ρ‹ΠΉ процСсс, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ источники Π·Π½Π°Π½ΠΈΠΉ ΠΌΠΎΠ³ΡƒΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Blackboard.
прямо.Но Π² этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ анализируСтся нСсколько ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ (ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Π½Ρ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ²), поэтому ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ источник Π·Π½Π°Π½ΠΈΠΉ ΠΈΠΌΠ΅Π΅Ρ‚ свойство IsEnabled, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ устанавливаСтся, Ссли Π½Π° Blackboard Π΅ΡΡ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ допустимыС ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹.

Π¨Π°Π±Π»ΠΎΠ½ Blackboard ΠΎΠ±ΡŠΡΠ²Π»ΡΠ΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€ выполняСт ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΏΠΎ источникам Π·Π½Π°Π½ΠΈΠΉ, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ занимаСтся ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ это многопроблСмная Blackboard, я Ρ€Π΅ΡˆΠΈΠ» максимально ΠΏΡ€ΠΈΠ΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒΡΡ исходной ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎΠΌΡƒ источнику Π·Π½Π°Π½ΠΈΠΉ
ΠΏΠ΅Ρ€Π΅Π±Ρ€Π°Ρ‚ΡŒ всС ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ / ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ критСриям выполнСния.

НСкоторыС описания шаблона Blackboard Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄Π΅Π»Π΅Π³Π°Ρ‚Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Π²Ρ‹Π·ΠΎΠ²Π°, Π½Π° ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π·Π°Ρ‚Π΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ Π΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π±Ρ€Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Π»ΡƒΡ‡ΡˆΠ΅Π΅ срСдство Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ (Π‘Π°Π·Π° Π·Π½Π°Π½ΠΈΠΉ). Π’ качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹, ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этих ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Π²Ρ‚ΠΎΠ½ΠΎΠΌΠ½ΠΎ, сообщая
Π½Π°Π·Π°Π΄ Π»ΡŽΠ±Ρ‹Π΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ измСнСния. Однако это Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π»Π΅Ρ€Π° Blackboard Pattern, поэтому я придСрТивался простой пошаговой систСмы. ЕдинствСнноС ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ — ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Radar. Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ это скорСС Β«Π²Ρ…ΠΎΠ΄Β» для Blackboard,
Π° Π½Π΅ «Π°ΠΊΡ‚Π΅Ρ€» Π½Π° Π΄Π°Π½Π½Ρ‹Ρ….

↑
Π’Π΅Ρ€Π½ΡƒΡ‚ΡŒΡΡ ΠΊ Π½Π°Ρ‡Π°Π»Ρƒ


Π’ этом Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π΅ описываСтся ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, доступный для Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ Π² Π³Π°Π»Π΅Ρ€Π΅Π΅ TechNet

.

http://gallery.technet.microsoft.com/Blackboard-Design-Pattern-13a35a7e

MainWindow

Π£ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΅ΡΡ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ интСрфСйс, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ прСдставляСт Π΄Π°Π½Π½Ρ‹Π΅ Blackboard ΠΊΠ°ΠΊ Π²ΠΈΠ·ΡƒΠ°Π»ΡŒΠ½ΠΎΠ΅ прСдставлСниС Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌΡ‹Ρ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ².

Бписок

Π² MainWindow.xaml — это простой ListBox. Однако ItemsPanel Π±Ρ‹Π» ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ Π² Canvas для Π½Π΅Π³ΠΎ ItemsHost, поэтому элСмСнты ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΠΎ X ΠΈ Y, Π° Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΏΠΎ списку.

< ListBox
ItemsSource = "{Binding blackboard.CurrentObjects}"
ItemsPanel = "{DynamicResource ItemsPanelTemplate1}"
ItemContainerStyle = "{DynamicResource ItemContainerStyle}"
ItemTemplate = "{DynamicResource ItemTemplate}"
ΠœΠ°Ρ€ΠΆΠ° = "20,20,20,10"
ΠŸΠ΅Ρ€Π΅Π΄Π½ΠΈΠΉ ΠΏΠ»Π°Π½ = "# FFDE6C6C"
>

< ListBox.РСсурсы >

< ItemsPanelTemplate
x: ΠΊΠ»ΡŽΡ‡ = "ItemsPanelTemplate1" >

< Π₯олст
IsItemsHost = "True" />

ItemsPanelTemplate >

ΠšΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ для ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚ΠΎΠ²

ItemContainer ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для позиционирования (Canvas.Left & Canvas.Top), Π° НЕ сам ItemTemplate.

< Π‘Ρ‚ΠΈΠ»ΡŒ
x: ΠΊΠ»ΡŽΡ‡ = "ItemContainerStyle"
TargetType = "{x: Type ListBoxItem}" >

< Π‘Π΅Ρ‚Ρ‚Π΅Ρ€
Бвойство = Β«Π€ΠΎΠ½Β»
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = Β«ΠŸΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½Ρ‹ΠΉΒ» />

< Π‘Π΅Ρ‚Ρ‚Π΅Ρ€
Бвойство = "HorizontalContentAlignment"
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = "{Binding HorizontalContentAlignment, RelativeSource = {RelativeSource AncestorType = {x: Type ItemsControl}}}" />

< Π‘Π΅Ρ‚Ρ‚Π΅Ρ€
Бвойство = "VerticalContentAlignment"
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = "{Binding VerticalContentAlignment, RelativeSource = {RelativeSource AncestorType = {x: Type ItemsControl}}}" />

< Π‘Π΅Ρ‚Ρ‚Π΅Ρ€
Бвойство = "Π₯олст.Π›Π΅Π²Ρ‹ΠΉ "
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = "{Binding X}" />

< Π‘Π΅Ρ‚Ρ‚Π΅Ρ€
Бвойство = "Canvas.Top"
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = "{Binding Y}" />

< Π‘Π΅Ρ‚Ρ‚Π΅Ρ€
Бвойство = Β«Π¨Π°Π±Π»ΠΎΠ½Β» >

< Π‘Π΅Ρ‚Ρ‚Π΅Ρ€.Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ >

< ControlTemplate
TargetType = "{x: Type ListBoxItem}" >

< Π“Ρ€Π°Π½ΠΈΡ†Π°
x: Имя = "Bd"
BorderBrush = "{TemplateBinding BorderBrush}"
BorderThickness = "{TemplateBinding BorderThickness}"
Π€ΠΎΠ½ = "{TemplateBinding Background}"
Padding = "{TemplateBinding Padding}"
SnapsToDevicePixels = "true" >

< ContentPresenter
HorizontalAlignment = "{TemplateBinding HorizontalContentAlignment}"
SnapsToDevicePixels = "{TemplateBinding SnapsToDevicePixels}"
VerticalAlignment = "{TemplateBinding VerticalContentAlignment}" />

Π“Ρ€Π°Π½ΠΈΡ†Π° >

ControlTemplate >

Π‘Π΅Ρ‚Ρ‚Π΅Ρ€.Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ >

Π‘Π΅Ρ‚Ρ‚Π΅Ρ€ >

Π‘Ρ‚ΠΈΠ»ΡŒ >

ИздСлиС

Π¨Π°Π±Π»ΠΎΠ½ ItemTemplate опрСдСляСт ΠΎΠ±ΡŠΠ΅ΠΊΡ‚, Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Image ΠΈ нСсколько
TextBoxes , всС Π·Π°ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹ Π² ΠΈΠ·ΠΌΠ΅Π½ΡΡŽΡ‰ΡƒΡŽ Ρ†Π²Π΅Ρ‚ Border (для бСзопасности ΠΈΠ»ΠΈ ΡƒΠ³Ρ€ΠΎΠ·Ρ‹).

БущСствуСт Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ отсчСт TextBlock для DistanceFromDestruction, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π΅Π΄Π΅Ρ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ отсчСт Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° воСнная машина (самолСты, Ρ€Π°ΠΊΠ΅Ρ‚Ρ‹) Π½Π΅ достигнСт Π»ΡŽΠ±Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… ΠΊΠ°ΠΊ ΡƒΠ³Ρ€ΠΎΠ·Ρ‹.

< Π¨Π°Π±Π»ΠΎΠ½ Π΄Π°Π½Π½Ρ‹Ρ…
x: ΠΊΠ»ΡŽΡ‡ = "ItemTemplate" >

< Π“Ρ€Π°Π½ΠΈΡ†Π° >

< Border.Style >

< Π‘Ρ‚ΠΈΠ»ΡŒ
TargetType = "{x: Type Border}" >

< Π‘Ρ‚ΠΈΠ»ΡŒ.Π’Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹ >

< DataTrigger
ΠŸΡ€ΠΈΠ²ΡΠ·ΠΊΠ° = "{ΠŸΡ€ΠΈΠ²ΡΠ·ΠΊΠ° IsThreat}"
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = «истинно» >

< Π‘Π΅Ρ‚Ρ‚Π΅Ρ€
Бвойство = Β«Π€ΠΎΠ½Β»
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = Β«ΠšΡ€Π°ΡΠ½Ρ‹ΠΉΒ» />

DataTrigger >

< DataTrigger
ΠŸΡ€ΠΈΠ²ΡΠ·ΠΊΠ° = "{ΠŸΡ€ΠΈΠ²ΡΠ·ΠΊΠ° IsThreat}"
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = «лоТь» >

< Π‘Π΅Ρ‚Ρ‚Π΅Ρ€
Бвойство = Β«Π€ΠΎΠ½Β»
Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ = Β«Π—Π΅Π»Π΅Π½Ρ‹ΠΉΒ» />

DataTrigger >

Π‘Ρ‚ΠΈΠ»ΡŒ.Π’Ρ€ΠΈΠ³Π³Π΅Ρ€Ρ‹ >

Π‘Ρ‚ΠΈΠ»ΡŒ >

Border.Style >

< Π‘Π΅Ρ‚ΠΊΠ°
ΠœΠ°Ρ€ΠΆΠ° = "3" >

< Π˜Π·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅
Высота = "48"
Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ = "{Binding Image}"
/>

< StackPanel
ΠœΠ°Ρ€ΠΆΠ° = "0,0,0, -30"
VerticalAlignment = "Π‘Π½ΠΈΠ·Ρƒ"
>

< TextBlock
ВСкст = "{Π’ΠΈΠΏ привязки}" />

< TextBlock
ВСкст = "{Имя привязки}" />

StackPanel >

< TextBlock
HorizontalAlignment = "ΠŸΡ€Π°Π²Ρ‹ΠΉ"
TextWrapping = "Wrap"
ВСкст = "{Binding DistanceFromDestruction}"
VerticalAlignment = "Π‘Π½ΠΈΠ·Ρƒ"
Π¨ΠΈΡ€ΠΈΠ½Π° = «Авто»
Visibility = "{Binding IsThreat, Converter = {StaticResource BooleanToVisibilityConverter}}" />

Π‘Π΅Ρ‚ΠΊΠ° >

Π˜Π·ΡƒΡ‡Π΅Π½ΠΈΠ΅ шаблонов проСктирования JavaScript

Π¨Π°Π±Π»ΠΎΠ½Ρ‹ проСктирования - это ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ часто Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΠΏΡ€ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.Π­Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π·Π°Ρ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‰Π°Ρ ΠΈ ΡƒΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½Π°Ρ Ρ‚Π΅ΠΌΠ° для изучСния Π½Π° любом языкС программирования.

Одна ΠΈΠ· ΠΏΡ€ΠΈΡ‡ΠΈΠ½ этого Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΏΠΎΠΌΠΎΠ³Π°ΡŽΡ‚ Π½Π°ΠΌ ΠΎΠΏΠΈΡ€Π°Ρ‚ΡŒΡΡ Π½Π° ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹ΠΉ ΠΎΠΏΡ‹Ρ‚ ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±Ρ‹Π»ΠΈ Π΄ΠΎ нас, ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‚ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ структуру нашСго ΠΊΠΎΠ΄Π°, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰ΡƒΡŽ трСбованиям ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΡ‹ пытаСмся Ρ€Π΅ΡˆΠΈΡ‚ΡŒ.

Π¨Π°Π±Π»ΠΎΠ½Ρ‹ проСктирования

Ρ‚Π°ΠΊΠΆΠ΅ Π΄Π°ΡŽΡ‚ Π½Π°ΠΌ ΠΎΠ±Ρ‰ΠΈΠΉ ΡΠ»ΠΎΠ²Π°Ρ€ΡŒ для описания Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΎΡ‰Π΅, Ρ‡Π΅ΠΌ описаниС синтаксиса ΠΈ сСмантики, ΠΊΠΎΠ³Π΄Π° ΠΌΡ‹ пытаСмся ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΈΠΌ способ структурирования Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΠΊΠΎΠ΄Π°.

Π’ этой ΠΊΠ½ΠΈΠ³Π΅ ΠΌΡ‹ исслСдуСм ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΊΠ°ΠΊ классичСских, Ρ‚Π°ΠΊ ΠΈ соврСмСнных шаблонов проСктирования ΠΊ языку программирования JavaScript.

ЦСлСвая аудитория

Π­Ρ‚Π° ΠΊΠ½ΠΈΠ³Π° ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° для ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΡ… ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ свои знания ΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Π°Ρ… проСктирования ΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π² языкС программирования JavaScript.

НСкоторыС ΠΈΠ· рассматриваСмых ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΉ (замыкания, ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏΠ½ΠΎΠ΅ наслСдованиС) ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΡŽΡ‚ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π±Π°Π·ΠΎΠ²Ρ‹Ρ… ΠΏΡ€Π΅Π΄Π²Π°Ρ€ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π½Π°Π½ΠΈΠΉ ΠΈ понимания.Если Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ большС ΡƒΠ·Π½Π°Ρ‚ΡŒ ΠΎΠ± этих Ρ‚Π΅ΠΌΠ°Ρ…, для удобства прСдоставляСтся список ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅ΠΌΡ‹Ρ… Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΎΠ².

Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π½Π°ΡƒΡ‡ΠΈΡ‚ΡŒΡΡ ΠΏΠΈΡΠ°Ρ‚ΡŒ красивый, структурированный ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΊΠΎΠ΄, я ΡΡ‡ΠΈΡ‚Π°ΡŽ, Ρ‡Ρ‚ΠΎ эта ΠΊΠ½ΠΈΠ³Π° для вас.

Благодарности

Π― всСгда Π±ΡƒΠ΄Ρƒ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ Ρ‚Π°Π»Π°Π½Ρ‚Π»ΠΈΠ²Ρ‹ΠΌ тСхничСским Ρ€Π΅Ρ†Π΅Π½Π·Π΅Π½Ρ‚Π°ΠΌ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΠΎΠΌΠΎΠ³Π»ΠΈ Ρ€Π΅Ρ†Π΅Π½Π·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΡƒΠ»ΡƒΡ‡ΡˆΠ°Ρ‚ΡŒ эту ΠΊΠ½ΠΈΠ³Ρƒ, Π² Ρ‚ΠΎΠΌ числС ΠΈΠ· сообщСства Π² Ρ†Π΅Π»ΠΎΠΌ. Знания ΠΈ энтузиазм, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠ½ΠΈ привнСсли Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, Π±Ρ‹Π»ΠΈ просто ΠΏΠΎΡ‚Ρ€ΡΡΠ°ΡŽΡ‰ΠΈΠΌΠΈ.Π’Π²ΠΈΡ‚Ρ‹ ΠΈ Π±Π»ΠΎΠ³ΠΈ ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… тСхничСских ΠΎΠ±ΠΎΠ·Ρ€Π΅Π²Π°Ρ‚Π΅Π»Π΅ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ²Π»ΡΡŽΡ‚ΡΡ постоянным источником ΠΈΠ΄Π΅ΠΉ ΠΈ вдохновСния, ΠΈ я всСм сСрдцСм Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΠΈΡ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΈΡ‚ΡŒ.

Π― Ρ‚Π°ΠΊΠΆΠ΅ Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΡ‚ΡŒ Π Π΅Π±Π΅ΠΊΠΊΡƒ ΠœΠ΅Ρ€Ρ„ΠΈ (http://rmurphey.com, @rmurphey) Π·Π° Π²Π΄ΠΎΡ…Π½ΠΎΠ²Π΅Π½ΠΈΠ΅ для написания этой ΠΊΠ½ΠΈΠ³ΠΈ ΠΈ, Ρ‡Ρ‚ΠΎ Π±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΠΎ, Π·Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½Π° ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Π»Π° Π΄Π΅Π»Π°Ρ‚ΡŒ Π΅Π΅ доступной ΠΊΠ°ΠΊ Π½Π° GitHub, Ρ‚Π°ΠΊ ΠΈ Ρ‡Π΅Ρ€Π΅Π· O'Reilly.

НаконСц, я Ρ…ΠΎΡ‚Π΅Π» Π±Ρ‹ ΠΏΠΎΠ±Π»Π°Π³ΠΎΠ΄Π°Ρ€ΠΈΡ‚ΡŒ мою Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΆΠ΅Π½Ρƒ Π­Π»Π»ΠΈ Π·Π° всю Π΅Π΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΡƒ, ΠΊΠΎΠ³Π΄Π° я Π³ΠΎΡ‚ΠΎΠ²ΠΈΠ» эту ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡŽ.

ΠšΡ€Π΅Π΄ΠΈΡ‚Ρ‹

Π₯отя Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹, описанныС Π² этой ΠΊΠ½ΠΈΠ³Π΅, Π±Ρ‹Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π½Π° основС Π»ΠΈΡ‡Π½ΠΎΠ³ΠΎ ΠΎΠΏΡ‹Ρ‚Π°, ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΈΠ· Π½ΠΈΡ… Π±Ρ‹Π»ΠΈ Ρ€Π°Π½Π΅Π΅ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ сообщСством JavaScript. Π­Ρ‚Π° Ρ€Π°Π±ΠΎΡ‚Π°, ΠΊΠ°ΠΊ таковая, являСтся Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠΌ совокупного ΠΎΠΏΡ‹Ρ‚Π° ряда Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ². Подобно логичСскому ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Ρƒ Бтояна Π‘Ρ‚Π΅Ρ„Π°Π½ΠΎΠ²Π° ΠΊ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΡŽ прСрывания повСствования с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΡ€Π΅Π΄ΠΈΡ‚ΠΎΠ² (Π² JavaScript Patterns ), я пСрСчислил ΠΊΡ€Π΅Π΄ΠΈΡ‚Ρ‹ ΠΈ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΠ» ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ любой ΠΊΠΎΠ½Ρ‚Π΅Π½Ρ‚, упомянутый Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ ссылок.

Если ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ ΡΡ‚Π°Ρ‚ΡŒΠΈ ΠΈΠ»ΠΈ ссылки Π±Ρ‹Π»ΠΈ ΡƒΠΏΡƒΡ‰Π΅Π½Ρ‹ Π² спискС Π»ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Ρ‹, ΠΏΡ€ΠΈΠΌΠΈΡ‚Π΅ ΠΌΠΎΠΈ искрСнниС извинСния. Если Π²Ρ‹ ΡΠ²ΡΠΆΠ΅Ρ‚Π΅ΡΡŒ со ΠΌΠ½ΠΎΠΉ, я ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ обновлю ΠΈΡ…, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚ΡŒ вас Π² список.

Π§Ρ‚Π΅Π½ΠΈΠ΅

Π₯отя эта ΠΊΠ½ΠΈΠ³Π° ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π° ΠΊΠ°ΠΊ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…, Ρ‚Π°ΠΊ ΠΈ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² срСднСго уровня, прСдполагаСтся Π±Π°Π·ΠΎΠ²ΠΎΠ΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ основ JavaScript. Если Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΡƒΠ·Π½Π°Ρ‚ΡŒ большС ΠΎ языкС, я с Ρ€Π°Π΄ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΡ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ названия:

  • JavaScript: ПолноС руководство Дэвида Π€Π»Π°Π½Π°Π³Π°Π½Π°
  • ΠšΡ€Π°ΡΠ½ΠΎΡ€Π΅Ρ‡ΠΈΠ²Ρ‹ΠΉ JavaScript ΠœΠ°Ρ€ΠΈΠ½ Π₯Π°Π²Π΅Ρ€Π±Π΅ΠΊΠ΅
  • Π¨Π°Π±Π»ΠΎΠ½Ρ‹ JavaScript ΠΎΡ‚ Бтояна Π‘Ρ‚Π΅Ρ„Π°Π½ΠΎΠ²Π°
  • НаписаниС ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ JavaScript ΠΎΡ‚ Николаса Закаса
  • JavaScript: Π₯ΠΎΡ€ΠΎΡˆΠΈΠ΅ Π΄Π΅Ρ‚Π°Π»ΠΈ Дуглас ΠšΡ€ΠΎΠΊΡ„ΠΎΡ€Π΄

Один ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½Ρ‹Ρ… аспСктов написания ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠ³ΠΎ ΠΊΠΎΠ΄Π° - это Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π·Π°ΠΌΠ΅Ρ‡Π°Ρ‚ΡŒ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ Ρ‚Π΅ΠΌΡ‹ Π² этом ΠΊΠΎΠ΄Π΅ ΠΈ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ….Π­Ρ‚ΠΎ ΠΎΠ±Π»Π°ΡΡ‚ΡŒ, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π·Π½Π°Π½ΠΈΠ΅ шаблонов проСктирования ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ бСсцСнным.

Π’ ΠΏΠ΅Ρ€Π²ΠΎΠΉ части этой ΠΊΠ½ΠΈΠ³ΠΈ ΠΌΡ‹ исслСдуСм ΠΈΡΡ‚ΠΎΡ€ΠΈΡŽ ΠΈ Π²Π°ΠΆΠ½ΠΎΡΡ‚ΡŒ шаблонов проСктирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ ΠΊ Π»ΡŽΠ±ΠΎΠΌΡƒ языку программирования. Если Π²Ρ‹ ΡƒΠΆΠ΅ заинтСрСсованы ΠΈΠ»ΠΈ Π·Π½Π°ΠΊΠΎΠΌΡ‹ с этой историСй, Π½Π΅ ΡΡ‚Π΅ΡΠ½ΡΠΉΡ‚Π΅ΡΡŒ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ ΠΊ Π³Π»Π°Π²Π΅ Β«Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ ΡƒΠ·ΠΎΡ€?Β» ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΡ‚ΡŒ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅.

ΠžΠ±Ρ€Π°Π·Ρ†Ρ‹ Π΄ΠΈΠ·Π°ΠΉΠ½Π° восходят ΠΊ Ρ€Π°Π½Π½ΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Π°ΠΌ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΏΠΎ ΠΈΠΌΠ΅Π½ΠΈ ΠšΡ€ΠΈΡΡ‚ΠΎΡ„Π΅Ρ€ АлСксандСр. Он часто писал ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΎ своСм ΠΎΠΏΡ‹Ρ‚Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ проСктирования ΠΈ ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ ΠΎΠ½ΠΈ связаны со зданиями ΠΈ Π³ΠΎΡ€ΠΎΠ΄Π°ΠΌΠΈ.ΠžΠ΄Π½Π°ΠΆΠ΄Ρ‹ АлСксандру ΠΏΡ€ΠΈΡˆΠ»ΠΎ Π² Π³ΠΎΠ»ΠΎΠ²Ρƒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠΌ использовании ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹Π΅ конструктивныС элСмСнты приводят ΠΊ ΠΆΠ΅Π»Π°Π΅ΠΌΠΎΠΌΡƒ ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΌΡƒ эффСкту.

Π’ сотрудничСствС с Π‘Π°Ρ€ΠΎΠΉ Исикава ΠΈ ΠœΡŽΡ€Ρ€Π΅Π΅ΠΌ Π‘ΠΈΠ»ΡŒΠ²Π΅Ρ€ΡΡ‚Π°ΠΉΠ½ΠΎΠΌ АлСксандр создал язык шаблонов, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΏΠΎΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°ΡΡˆΠΈΡ€ΠΈΡ‚ΡŒ возмоТности любого, ΠΊΡ‚ΠΎ ΠΆΠ΅Π»Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π² любом ΠΌΠ°ΡΡˆΡ‚Π°Π±Π΅. Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ΠΎ Π΅Ρ‰Π΅ Π² 1977 Π³ΠΎΠ΄Ρƒ Π² ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«Π―Π·Ρ‹ΠΊ шаблонов», которая ΠΏΠΎΠ·ΠΆΠ΅ Π±Ρ‹Π»Π° Π²Ρ‹ΠΏΡƒΡ‰Π΅Π½Π° Π² Π²ΠΈΠ΄Π΅ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΊΠ½ΠΈΠ³ΠΈ Π² Ρ‚Π²Π΅Ρ€Π΄ΠΎΠΌ ΠΏΠ΅Ρ€Π΅ΠΏΠ»Π΅Ρ‚Π΅.

Около 30 Π»Π΅Ρ‚ Π½Π°Π·Π°Π΄ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Ρ‹-программисты Π½Π°Ρ‡Π°Π»ΠΈ Π²ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹, ΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… писал АлСксандр, Π² ΠΏΠ΅Ρ€Π²ΡƒΡŽ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ ΠΏΠΎ шаблонам проСктирования, которая Π΄ΠΎΠ»ΠΆΠ½Π° Π±Ρ‹Π»Π° ΡΡ‚Π°Ρ‚ΡŒ руководством для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², ΠΆΠ΅Π»Π°ΡŽΡ‰ΠΈΡ… ΡƒΠ»ΡƒΡ‡ΡˆΠΈΡ‚ΡŒ свои Π½Π°Π²Ρ‹ΠΊΠΈ программирования.Π’Π°ΠΆΠ½ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ, Π»Π΅ΠΆΠ°Ρ‰ΠΈΠ΅ Π² основС шаблонов проСктирования, Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚ Π² индустрии программирования с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° Π΅Π΅ создания, хотя ΠΈ Π² ΠΌΠ΅Π½Π΅Π΅ Ρ„ΠΎΡ€ΠΌΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ„ΠΎΡ€ΠΌΠ΅.

Одной ΠΈΠ· ΠΏΠ΅Ρ€Π²Ρ‹Ρ… ΠΈ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π·Π½Π°ΠΊΠΎΠ²Ρ‹Ρ… ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Ρ… Ρ€Π°Π±ΠΎΡ‚, ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½Π½Ρ‹Ρ… ΠΏΠΎ шаблонам проСктирования Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, Π±Ρ‹Π»Π° ΠΊΠ½ΠΈΠ³Π° Π² 1995 Π³ΠΎΠ΄Ρƒ ΠΏΠΎΠ΄ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ΠΌ Β«Π¨Π°Π±Π»ΠΎΠ½Ρ‹ проСктирования : элСмСнты ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния ΠΌΠ½ΠΎΠ³ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ использования» . Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ написано Π­Ρ€ΠΈΡ…ΠΎΠΌ Π“Π°ΠΌΠΌΠΎΠΉ, Π ΠΈΡ‡Π°Ρ€Π΄ΠΎΠΌ Π₯Π΅Π»ΠΌΠΎΠΌ, Π Π°Π»ΡŒΡ„ΠΎΠΌ ДТонсоном ΠΈ Π”ΠΆΠΎΠ½ΠΎΠΌ ВлиссидСсом - Π³Ρ€ΡƒΠΏΠΏΠΎΠΉ, которая стала извСстна ΠΊΠ°ΠΊ Π‘Π°Π½Π΄Π° Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… (ΠΈΠ»ΠΈ сокращСнно GoF).

ΠŸΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡ GoF считаСтся вСсьма ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ для дальнСйшСго продвиТСния ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈ шаблонов проСктирования Π² нашСй области, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Π½Π΅ΠΉ описываСтся ряд ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ ΠΏΠΎΠ΄Π²ΠΎΠ΄Π½Ρ‹Ρ… ΠΊΠ°ΠΌΠ½Π΅ΠΉ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ, Π° Ρ‚Π°ΠΊΠΆΠ΅ даСтся Π΄Π²Π°Π΄Ρ†Π°Ρ‚ΡŒ Ρ‚Ρ€ΠΈ основных шаблона ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ проСктирования, часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… сСгодня Π²ΠΎ всСм ΠΌΠΈΡ€Π΅. ΠœΡ‹ рассмотрим эти ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ Β«ΠšΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ шаблонов Π΄ΠΈΠ·Π°ΠΉΠ½Π°Β».

Π’ этой ΠΊΠ½ΠΈΠ³Π΅ ΠΌΡ‹ рассмотрим ряд популярных шаблонов проСктирования JavaScript ΠΈ выясним, ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΎΠ΄Π½ΠΈ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ подходящими для Π²Π°ΡˆΠΈΡ… ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Ρ‡Π΅ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠ΅.ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅, Ρ‡Ρ‚ΠΎ ΡˆΠ°Π±Π»ΠΎΠ½Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΠΎΠ±Ρ‹Ρ‡Π½ΠΎΠΌΡƒ JavaScript (Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΊ стандартному JavaScript-ΠΊΠΎΠ΄Ρƒ), Π½ΠΎ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ ΠΊ абстрактным Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌ, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ jQuery ΠΈΠ»ΠΈ dojo. ΠŸΡ€Π΅ΠΆΠ΄Π΅ Ρ‡Π΅ΠΌ ΠΌΡ‹ Π½Π°Ρ‡Π½Π΅ΠΌ, Π΄Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим

GOFPatterns (повСдСнчСскиС, творчСскиС, структурныС)

.
Π¨Π°Π±Π»ΠΎΠ½Ρ‹ проСктирования - это концСпция Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰Π°Ρ ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡŽΡ‰ΠΈΠ΅ΡΡ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎΠ±Ρ‰ΠΈΡ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.
Авторы Π­Ρ€ΠΈΡ… Π“Π°ΠΌΠΌΠ°, Π ΠΈΡ‡Π°Ρ€Π΄ Π₯Π΅Π»ΠΌ, Π Π°Π»ΡŒΡ„ ДТонсон ΠΈ Π”ΠΆΠΎΠ½ ВлиссидСс часто ΡƒΠΏΠΎΠΌΠΈΠ½Π°ΡŽΡ‚ΡΡ ΠΊΠ°ΠΊ GoF ΠΈΠ»ΠΈ Π‘Π°Π½Π΄Π° Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ….
Π‘Π°ΠΉΡ‚ исслСдуСт возмоТности ΠΈ нСдостатки ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ программирования ΠΈ описываСт нСсколько шаблонов проСктирования ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.
ΠžΡ‚Ρ‡Π°ΡΡ‚ΠΈ ΠΏΡ€ΠΈΠ²Π»Π΅ΠΊΠ°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ шаблонов проСктирования Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π΅Π΄ΠΈΠ½ΠΎΠΎΠ±Ρ€Π°Π·Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… языках ΠΈ синтаксисах.
Базовая структура остаСтся ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΉ; ΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π΄Π΅Ρ‚Π°Π»ΠΈ. Π›Π΅Π³ΠΊΠΎ Π²Π·ΡΡ‚ΡŒ шаблон, Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π½Π° Java, ΠΈ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π² C ++.
Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈ слоТилось Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΎΠ±Ρ€Π°Π·Ρ†Ρ‹ Π΄ΠΈΠ·Π°ΠΉΠ½Π°

  1. Π±Ρ‹Π»ΠΈ Π·Π°ΠΏΠ΅Ρ€Ρ‚Ρ‹ Π² Π³ΠΎΠ»ΠΎΠ²Π°Ρ… экспСртов ΠΈΠ»ΠΈ
  2. ΠΏΠΎΡ…ΠΎΡ€ΠΎΠ½Π΅Π½ Π³Π»ΡƒΠ±ΠΎΠΊΠΎ Π² исходном ΠΊΠΎΠ΄Π΅.

Π§Ρ‚ΠΎ трСбуСтся, Ρ‚Π°ΠΊ это ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ срСдства извлСчСния, докумСнтирования, ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ, примСнСния ΠΈ сохранСния этого ΠΎΠΏΡ‹Ρ‚Π° проСктирования Π±Π΅Π· ΠΈΠ·Π»ΠΈΡˆΠ½ΠΈΡ… Π·Π°Ρ‚Ρ€Π°Ρ‚ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΈ усилий.

Π¨Π°Π±Π»ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±ΡŠΡΡΠ½ΡΡ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ конкрСтная ситуация Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ считаСтся Ρ…ΠΎΡ€ΠΎΡˆΠΈΠΌ. ΠžΠ±Ρ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ проСктирования Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ ΠΈΠ·-Π·Π° "ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΡƒΡŽΡ‰ΠΈΡ… сил", Ρ‚Π°ΠΊΠΈΡ… ΠΊΠ°ΠΊ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½Π°Ρ€ΡƒΡˆΠ΅Π½ΠΈΠ΅ΠΌ скорости Π·Π²ΡƒΠΊΠ° ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ΠΌ распада самолСта.
Π­Ρ‚ΠΈ значСния, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Π΅ Π°Π²Ρ‚ΠΎΡ€ΠΎΠΌ шаблона для опрСдСлСния "Π»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ" Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹ Π² шаблонС.Π¨Π°Π±Π»ΠΎΠ½ Ρ‚Π°ΠΊΠΆΠ΅ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΠ±ΡŠΡΡΠ½ΡΡ‚ΡŒ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π΄Π²Π° Π΄ΠΎΠΌΠ° ΠΌΠΎΠ³ΡƒΡ‚ сильно ΠΎΡ‚Π»ΠΈΡ‡Π°Ρ‚ΡŒΡΡ Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°,
Π¨Π°Π±Π»ΠΎΠ½ проСктирования Π΄ΠΎΠΌΠΎΠ² Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ достаточно ΡˆΠΈΡ€ΠΎΠΊΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π΅Π³ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±Ρ‹Π»ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΊ Π½ΠΈΠΌ ΠΎΠ±ΠΎΠΈΠΌ, Π½ΠΎ Π½Π΅ Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ расплывчатым, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π½Π΅ ΠΏΠΎΠΌΠΎΠ³Π°Ρ‚ΡŒ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€Ρƒ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.
Π”ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ ситуаций, Π² ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ шаблон, называСтся Π΅Π³ΠΎ контСкстом. НСкоторыми ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ «всС Π΄ΠΎΠΌΠ°Β», «всС двухэтаТныС Π΄ΠΎΠΌΠ°Β» ΠΈΠ»ΠΈ «всС мСста, Π³Π΄Π΅ люди проводят врСмя». ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ Π·Π°Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½ Π² шаблонС.

Π­Ρ‚ΠΎΡ‚ Π²Π΅Π±-сайт посвящСн шаблонам проСктирования, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ простыС ΠΈ элСгантныС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ Π² ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π΄ΠΈΠ·Π°ΠΉΠ½Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния .Π¨Π°Π±Π»ΠΎΠ½Ρ‹ проСктирования ΠΎΡ…Π²Π°Ρ‚Ρ‹Π²Π°ΡŽΡ‚ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π»ΠΈΡΡŒ ΠΈ Ρ€Π°Π·Π²ΠΈΠ²Π°Π»ΠΈΡΡŒ с Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ΠΌ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, ΠΈ это Π½Π΅ Ρ‚Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Ρ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ люди ΠΎΠ±Ρ‹Ρ‡Π½ΠΎ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ. Они ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‚ нСсказанный Ρ€Π΅Π΄ΠΈΠ·Π°ΠΉΠ½ ΠΈ ΠΏΠ΅Ρ€Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²ΠΊΡƒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ Π±ΠΎΡ€ΠΎΠ»ΠΈΡΡŒ Π·Π° большСС ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎΠ΅ использованиС ΠΈ Π³ΠΈΠ±ΠΊΠΎΡΡ‚ΡŒ своСго ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠ³ΠΎ обСспСчСния.

ΠŸΡ€ΠΎΠΈΡΡ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠ·Π°ΠΉΠ½Π° обсуТдаСтся, Π½ΠΎ ΠΏΠ΅Ρ€Π²Ρ‹ΠΌΠΈ языками, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π΄ΠΈΠ·Π°ΠΉΠ½, Π±Ρ‹Π»ΠΈ Simula ΠΈ SmallTalk. На сайтС Π΅ΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π° Π½Π° C ++ ΠΈ Java.
Π¨Π°Π±Π»ΠΎΠ½Ρ‹ проСктирования ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‚ эти Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π² ΠΊΡ€Π°Ρ‚ΠΊΠΎΠΉ ΠΈ простой Π² ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ„ΠΎΡ€ΠΌΠ΅.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π’Π°Ρˆ адрСс email Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½. ΠžΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ поля ΠΏΠΎΠΌΠ΅Ρ‡Π΅Π½Ρ‹ *