Design Patterns in the 21st Century

156 views
Skip to first unread message

Николай ВасилСв

unread,
Jan 26, 2015, 8:30:23β€―AM1/26/15
to design-pat...@googlegroups.com
Π—Π΄Ρ€Π°Π²Π΅ΠΉΡ‚Π΅,Β 

Π’ Ρ‡Π΅Ρ‚Π²ΡŠΡ€Ρ‚ΡŠΠΊ Ρ‰Π΅ ΠΈΠΌΠ° meetup, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° интСрСсСн:

https://skillsmatter.com/meetups/6957-design-patterns-in-the-21st-century

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°ΠΌ слСд срСщата Ρ‰Π΅ пуснат ΠΈ записа ΠΈ Ρ‰Π΅ Π΅ интСрСсно Π΄Π° сС Π³Π»Π΅Π΄Π°.

ΠœΠΈΡΠ»Π΅Ρ… си Ρ‚Π΅Π·ΠΈ Π΄Π½ΠΈ, Ρ‡Π΅ ΠΌΠΎΠΆΠ΅ Π±ΠΈ Java 6, Π½Π΅ Π΅ ΠΌΠ½ΠΎΠ³ΠΎ Π°ΠΊΡ‚ΡƒΠ°Π»Π½Π° ΠΈ навярно Ρ‰Π΅ Π΅ Π΄ΠΎΠ±Ρ€Π΅ Π΄Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°ΠΌΠ΅ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Π½Π° Java 8. Π‘ΡŠΠΎΡ‚Π²Π΅Ρ‚Π½ΠΎ Ρ‚Π°Π·ΠΈ прСзСнтация ΠΌΠΎΠΆΠ΅ Π΄Π° Π½ΠΈ Π΄Π°Π΄Π΅ някакви ΠΎΡ‚ΠΏΡ€Π°Π²Π½ΠΈ Ρ‚ΠΎΡ‡ΠΊΠΈ.

Ако Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° Π³ΠΎΡ€Π΅ Π½Π΅ сС отваря, Ρ‚ΠΎΠ²Π° Π΅ описаниСто Π½Π° ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅Ρ‚ΠΎ:

------------------------------------
With the advent of lambdas in Java 8, functional programming truly has returned to the mainstream, sitting proudly alongside its object-oriented brother. We now have the tools to create applications that use the best of both paradigms, but our knowledge and understanding of the concepts under the hood needs to catch up.

For years, we've relied on design patterns to guide us to solutions that are clean, simple and practical, but many of the classic OO design patterns laid out in the Gang of Four's book are actually workarounds for the lack of functional programming constructs such as lambdas and higher-order functions. With new tools at our disposal, we can simplify the majority of design patterns, using pure functions to reduce the proliferation of classes that are used once and thrown away. By removing the boilerplate surrounding our code, we focus on the most important part: the behaviour.

In this talk, Samir Talwar will lead you through the classic design patterns, as well as some more contemporary object-oriented principles, showing you how functions can drastically simplify your design, leading to code that is cleaner and more concise.

This presentation will cover a few design patterns, but the focus is on Java 8. It's a slideshow, so it's not live coding, but practically all of the slides are entirely code, so you should be comfortable reading it.

------------------------------------


ΠŸΠΎΠ·Π΄Ρ€Π°Π²ΠΈ,
Николай

Ivan St. Ivanov

unread,
Jan 26, 2015, 9:27:48β€―AM1/26/15
to design-pat...@googlegroups.com
Π—Π΄Ρ€Π°Π²Π΅ΠΉΡ‚Π΅,

Оня Π΄Π΅Π½ ΡΠ»ΡƒΡˆΠ°Ρ… podcast с GoF (Π²ΡΡŠΡ‰Π½ΠΎΡΡ‚ само с Ρ‚Ρ€ΠΈΠΌΠ° ΠΎΡ‚ тях, Ρ‡Π΅Ρ‚Π²ΡŠΡ€Ρ‚ΠΈΡΡ‚ Π΅ ΠΏΠΎΡ‡ΠΈΠ½Π°Π» ΠΏΡ€Π΅Π· 2005-Ρ‚Π°):


Π’Π°, Ρ…ΠΎΡ€Π°Ρ‚Π° си ΠΊΠ°Π·Π°Ρ…Π°, Ρ‡Π΅ ΠΏΡ€ΠΈΡ‡ΠΈΠ½Π°Ρ‚Π° Π΄Π° Π³ΠΈ ΠΈΠΌΠ° всички Ρ‚Π΅Π·ΠΈ pattern-ΠΈ Π΅, Ρ‡Π΅ Π² Π΅Π·ΠΈΡ†ΠΈΡ‚Π΅ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ ΠΏΠΎ ΠΎΠ½ΠΎΠ²Π° Π²Ρ€Π΅ΠΌΠ΅ са липсвали Π°Π΄Π΅ΠΊΠ²Π°Ρ‚Π½ΠΈ конструкции, с ΠΊΠΎΠΈΡ‚ΠΎ Π΄Π° сС ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Ρ‚ Ρ‚Π΅. Π’.Π΅. pattern-ΠΈΡ‚Π΅ са Π΅Π΄ΠΈΠ½ Π²ΠΈΠ΄ workaround Π·Π° липсваща функционалност Π² Π΅Π·ΠΈΠΊΠ°. НапримСр ΠΏΡ€Π΅Π· 1994-Ρ‚Π° Π΅ липсвало Π½Π΅Ρ‰ΠΎ ΠΊΠ°Ρ‚ΠΎ абстрактСн клас ΠΈ Ρ‚Π΅ са си Π³ΠΎ измислили.

Π’ Ρ‚ΠΎΠ·ΠΈ Ρ€Π΅Π΄ Π½Π° мисли ΠΏΡ€Π°Ρ‚Π΅Π½Π°Ρ‚Π° ΠΎΡ‚ Ники лСкция Π΅ ΠΌΠ½ΠΎΠ³ΠΎ интСрСсна. Вя отговаря Π½Π° Π²ΡŠΠΏΡ€ΠΎΡΠ° ΠΊΠΎΠΈ ΠΎΡ‚ ΠΎΠ½Π΅Π·ΠΈ pattern-ΠΈ са Π²Π°Π»ΠΈΠ΄Π½ΠΈ всС ΠΎΡ‰Π΅ днСс. ΠžΡ‰Π΅ ΠΏΠΎΠ²Π΅Ρ‡Π΅, Π°ΠΊΠΎ ΠΏΠΈΡ‚Π°Ρ‚Π΅ някой functional programming guru, Ρ‚ΠΎΠΉ Ρ‰Π΅ Π²ΠΈ наплюС ΠΈ Ρ‰Π΅ ΠΊΠ°ΠΆΠ΅: Π·Π° ΠΊΠ°ΠΊΠ²ΠΎ са Π²ΠΈ Ρ‚Π΅Π·ΠΈ pattern-ΠΈ.

Π’Π°, Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ Π½Π΅ съм написал ΠΈΠ»ΠΈ Ρ€Π΅Π²ΡŽΠΈΡ€Π°Π» ΠΈ Ρ€Π΅Π΄ ΠΎΡ‚ ΠΊΠ½ΠΈΠ³Π°Ρ‚Π°, Π±ΠΈΡ… Π·Π°Π΄Π°Π» Π²ΡŠΠΏΡ€ΠΎΡΠ°: ΠΊΠΎΠ»ΠΊΠΎ Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½Π° Π±ΠΈ Π±ΠΈΠ»Π° Ρ‚Π°Π·ΠΈ ΠΊΠ½ΠΈΠ³Π° днСс със ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Π½ΠΈΠ΅Ρ‚ΠΎ ΠΉ ΠΎΡ‚ 1994-Ρ‚Π°. Мисля, Ρ‡Π΅ лСкцията Ρ‰Π΅ Π΄Π°Π΄Π΅ сравнитСлСн ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ Π½Π° Ρ‚ΠΎΠ·ΠΈ Π²ΡŠΠΏΡ€ΠΎΡ.

ΠŸΠΎΠ·Π΄Ρ€Π°Π²ΠΈ,
Иван


--
ΠŸΠΎΠ»ΡƒΡ‡ΠΈΡ…Ρ‚Π΅ Ρ‚ΠΎΠ²Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΠ΅, Π·Π°Ρ‰ΠΎΡ‚ΠΎ стС Π°Π±ΠΎΠ½ΠΈΡ€Π°Π½ΠΈ Π·Π° Π³Ρ€ΡƒΠΏΠ°Ρ‚Π° β€žDesign Patterns Bookβ€œ Π² Google Π“Ρ€ΡƒΠΏΠΈ.
Π—Π° Π΄Π° сС ΠΎΡ‚ΠΏΠΈΡˆΠ΅Ρ‚Π΅ ΠΎΡ‚ Ρ‚Π°Π·ΠΈ Π³Ρ€ΡƒΠΏΠ° ΠΈ Π΄Π° прСстанСтС Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π°Ρ‚Π΅ ΠΈΠΌΠ΅ΠΉΠ»ΠΈ ΠΎΡ‚ нСя, ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Ρ‚Π΅ ΠΈΠΌΠ΅ΠΉΠ» Π΄ΠΎ design-patterns-...@googlegroups.com.
Π—Π° Π΄Π° ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Ρ‚Π΅ Π² Ρ‚Π°Π·ΠΈ Π³Ρ€ΡƒΠΏΠ°, ΠΈΠ·ΠΏΡ€Π°Ρ‚Π΅Ρ‚Π΅ ΠΈΠΌΠ΅ΠΉΠ» Π΄ΠΎ design-pat...@googlegroups.com.
ΠŸΠΎΡΠ΅Ρ‚Π΅Ρ‚Π΅ Ρ‚Π°Π·ΠΈ Π³Ρ€ΡƒΠΏΠ° Π½Π° адрСс http://groups.google.com/group/design-patterns-book.
Π—Π° ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΎΠΏΡ†ΠΈΠΈ посСтСтС https://groups.google.com/d/optout.

Николай ВасилСв

unread,
Jan 26, 2015, 4:49:00β€―PM1/26/15
to design-pat...@googlegroups.com
Здрасти Π’Π°Π½ΠΊΠ°,

ΠœΠ΅Ρ€ΡΠΈ Π·Π° ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€Π° ΠΈ Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° (Π½Π° ΠΌΠ΅Π½ Π½Π΅Ρ‰ΠΎ Π½Π΅ ΠΌΠΈ сС отваря, Π½ΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΅ ΠΎΡ‚ моя доставчик) :)Β 

Π”Π°, ΡˆΠ°Π±Π»ΠΎΠ½ΠΈΡ‚Π΅ са Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΈ с Ρ†Π΅Π» Π΄Π° Π·Π°ΠΏΡŠΠ»Π½ΡΡ‚ пропуски Π² самитС Π΅Π·ΠΈΡ†ΠΈ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ ΠΈ Ρ‚ΡŠΠΊΠΌΠΎ Π·Π°Ρ‚ΠΎΠ²Π° ΠΏΡ€Π°Ρ‚ΠΈΡ… Π²Ρ€ΡŠΠ·ΠΊΠ°Ρ‚Π° към лСкцията. Π©Π΅ Π΅ интСрСсно Π΄Π° Ρ‡ΡƒΠ΅ΠΌ Π½ΠΎΠ²ΠΈΡ‚Π΅ ΠΈΠ΄Π΅ΠΈ.

Π‘ΠΏΠΎΡ€Π΅Π΄ ΠΌΠ΅Π½ ΠΈΠΌΠ° смисъл ΠΎΡ‚ ΡˆΠ°Π±Π»ΠΎΠ½ΠΈΡ‚Π΅, Ρ‚.ΠΊ. Π½Π°ΠΉ-ΠΌΠ°Π»ΠΊΠΎΡ‚ΠΎ Ρ‚Π΅ ΠΊΠ°Ρ€Π°Ρ‚ Π΄Π° мислиш Π½Π° Π΅Π΄Ρ€ΠΎ ΠΈ Π΄Π° виТдаш Π½Π΅Ρ‰Π°Ρ‚Π° Π³Π»ΠΎΠ±Π°Π»Π½ΠΎ, Π½Π΅ само Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ‚Π΅ Π½Π° класовС, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Ρ‚.Π½. ΠžΡ‚Π΄Π΅Π»Π½ΠΎ ΡΡŠΠ·Π΄Π°Π²Π°Ρ‚ Π΅Π·ΠΈΠΊ Π·Π° комуникация, ΠΊΠΎΠΉΡ‚ΠΎ вярно, ΠΌΠ½ΠΎΠ³ΠΎ Π΅Π·ΠΈΡ†ΠΈ Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Π²Π΅Ρ‡Π΅ са ΠΈΠ½Ρ‚Π΅Ρ€Π½Π°Π»ΠΈΠ·ΠΈΡ€Π°Π»ΠΈ, Π½ΠΎ Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‚ΠΎΠ²Π° ΠΈΠΌΠ° ΠΈΠ΄Π΅ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ си струват Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π°Π·ΠΊΠ°Π·Π°Π½ΠΈ ΠΈ ΠΊΠΎΠΈΡ‚ΠΎ всС ΠΎΡ‰Π΅ Π½Π΅ са част ΠΎΡ‚ ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ Π΅Π·ΠΈΡ†ΠΈ.Β 

ΠžΡ‚Π½ΠΎΡΠ½ΠΎ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ - Ρ‚ΠΎ Π½Π΅ Π΅ панацСя Π·Π° всички ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ (ΠΎΠ½Π·ΠΈ Π΄Π΅Π½ ДТСймс Гослинг ΠΊΠ°Π·Π° ΡΡŠΡ‰ΠΎΡ‚ΠΎ Π½Π° лСкцията Π·Π° WaveGlider). Π’ΠΎ Π΅ просто ΠΏΠ°Ρ€Π°Π΄ΠΈΠ³ΠΌΠ°/имплСмСнтация, ΠΊΠ°ΠΊΡ‚ΠΎ са ООП-Ρ‚ΠΎ ΠΈΠ»ΠΈ пък логичСското ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅, която слуТи Π·Π° ΠΏΠΎ-Π΄ΠΎΠ±Ρ€ΠΎ изразяванС Π½Π° ΠΈΠ΄Π΅ΠΈΡ‚Π΅. Π”Π°ΠΆΠ΅ Π°ΠΊΠΎ сС злоупотрСбява с Π½Π΅Π³ΠΎ (ΠΊΠ°ΠΊΡ‚ΠΎ става ΠΌΠ½ΠΎΠ³ΠΎ чСсто със залитанията Π² Scala), моТСш Π΄Π° "Π½Π°Ρ‚Π²ΠΎΡ€ΠΈΡˆ" Π΅Π΄Π½Π° ΠΏΡ€ΠΎΡ†Π΅Π΄ΡƒΡ€Π½ΠΎ-ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€Π°Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°, написана Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π΅Π½ Π΅Π·ΠΈΠΊ, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠΌΠ° ΠΈ ОО-Ρ…Π°Ρ€Π°ΠΊΡ‚Π΅Ρ€... Π’ Ρ‚ΠΎΠ·ΠΈ Ρ€Π΅Π΄ Π½Π° мисли, струва ΠΌΠΈ сС, Ρ‡Π΅ Π°ΠΊΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ конструкциитС ΠΎΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΎΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Π² Java, Ρ‰Π΅ успССм Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌ доста Π΄ΠΎΠ±ΡŠΡ€ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π», Ρ‚.ΠΊ. ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΈΡ‚Π΅ Ρ‰Π΅ са ΠΏΠΎ-Π΅Π»Π΅Π³Π°Π½Ρ‚Π½ΠΈ ΠΈ Ρ‡Π΅Ρ‚ΠΈΠΌΠΈ/Ρ€Π°Π·Π±Π΅Ρ€Π°Π΅ΠΌΠΈ, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ ΠΎΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π΅Π½ΠΈ.

ΠšΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π΄ΠΎ Π²ΡŠΠΏΡ€ΠΎΡΠ° Ρ‚ΠΈ, ΠΊΠ½ΠΈΠ³Π°Ρ‚Π° Π΅ Π½ΡƒΠΆΠ½Π°, Ρ‚.ΠΊ. Π½ΠΈΠ΅ обяснявамС Π½Π΅ ΠΊΠΎΠ½Ρ†Π΅ΠΏΡ†ΠΈΠΈΡ‚Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ΠΈ Π² ΠΊΠ½ΠΈΠ³Π°Ρ‚Π° Π½Π° GoF, Π° ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΡ‚ΠΎ ΠΈΠΌ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅, Ρ‚.Π΅. Ρ‚ΠΎΠ²Π°, Π΄ΠΎ ΠΊΠΎΠ΅Ρ‚ΠΎ са сС Ρ€Π°Π·Π²ΠΈΠ»ΠΈ ΠΏΡ€Π΅Π· Π³ΠΎΠ΄ΠΈΠ½ΠΈΡ‚Π΅ (някои шаблони са Ρ€Π΅Π°Π»Π½ΠΎ Π°Π½Ρ‚ΠΈ-шаблони Π²Π΅Ρ‡Π΅ ;), Π΄Ρ€ΡƒΠ³ΠΈ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Π½ΠΈ с Ρ€Π°Π·Π½ΠΈ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈ ΠΈΠΌΠ°Ρ‚ ΠΌΠ½ΠΎΠ³ΠΎ Π΅Π»Π΅Π³Π°Π½Ρ‚Π½ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ (Π½Π°ΠΏΡ€. Builder + Fluent Interface)), Ρ‚Π°ΠΊΠ° Ρ‡Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ ΠΈΠΌΠ° смисъл ΠΎΡ‚ нСя ΠΈ ΠΌΠΈ сС струва, Ρ‡Π΅ Ρ‚ΠΎΡ‡Π½ΠΎ Π² комбинация с Π½ΠΎΠ²ΠΈΡ‚Π΅ конструкции Π² Java, Ρ‰Π΅ сС ΠΏΠΎΠ»ΡƒΡ‡ΠΈ доста интСрСсСн ΠΈ ΠΏΠΎΠ»Π΅Π·Π΅Π½ ΠΌΠ°Ρ‚Π΅Ρ€ΠΈΠ°Π». :)

Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Π² Ρ€Π°Π·Π³ΠΎΠ²ΠΎΡ€ΠΈ, с приятСли, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡ€Π΅ΠΏΠΎΠ΄Π°Π²Π°Ρ‚ Π² унивСрситСти Π² Бофия ΠΈΠ»ΠΈ страната ΠΈ с Π΄Ρ€ΡƒΠ³ΠΈ, Π½Π° ΠΊΠΎΠΈΡ‚ΠΎ ΠΈΠΌ сС Π½Π°Π»Π°Π³Π° Π΄Π° си Π½Π°Π±ΠΈΡ€Π°Ρ‚ ΠΈΠ»ΠΈ ΠΎΠ±ΡƒΡ‡Π°Π²Π°Ρ‚ Ρ…ΠΎΡ€Π° във Ρ„ΠΈΡ€ΠΌΠΈΡ‚Π΅, ΠΊΠ°Π·Π²Π°Ρ‚, Ρ‡Π΅ ΠΈΠΌΠ° Π½ΡƒΠΆΠ΄Π° ΠΎΡ‚ Π΄ΠΎΠ±Ρ€Π° ΠΈ ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½Π° ΠΊΠ½ΠΈΠ³Π° Π½Π° Π±ΡŠΠ»Π³Π°Ρ€ΡΠΊΠΈ Π² Ρ‚Π°Π·ΠΈ област, която Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ ΠΊΠ°Ρ‚ΠΎ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ/рСфСрСнция.

ΠŸΠΎΠ·Π΄Ρ€Π°Π²ΠΈ,
Николай
--
Николай ВасилСв
Reply all
Reply to author
Forward
0 new messages