GRASP
Last updated
Was this helpful?
Last updated
Was this helpful?
GRASP ( general responsibility assignment software patterns β ΠΎΠ±ΡΠΈΠ΅ ΡΠ°Π±Π»ΠΎΠ½Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ; ΡΠ°ΠΊΠΆΠ΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΎΠ΅ ΡΠ»ΠΎΠ²ΠΎ "grasp" β Β«ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ, Ρ Π²Π°ΡΠΊΠ°Β») β ΡΠ°Π±Π»ΠΎΠ½Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠΈΡ Π·Π°Π΄Π°Ρ ΠΏΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΠΈ .
GRASP - general responsibility assignment software patterns β ΠΎΠ±ΡΠΈΠ΅ ΡΠ°Π±Π»ΠΎΠ½Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ. GRASP ΡΠ°Π±Π»ΠΎΠ½Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ Π² ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π΄Π»Ρ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠΈΡ Π·Π°Π΄Π°Ρ ΠΏΠΎ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠ΅ΠΉ ΠΊΠ»Π°ΡΡΠ°ΠΌ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌ.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄Π΅Π²ΡΡΡ GRAPS ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ², ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π² ΠΊΠ½ΠΈΠ³Π΅ ΠΡΠ΅ΠΉΠ³Π° ΠΠ°ΡΠΌΠ°Π½Π° Β«ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ UML ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ² ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡΒ». Π ΠΎΡΠ»ΠΈΡΠΈΠ΅ ΠΎΡ ΠΊΠ»Π°ΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΈΡΠ°ΡΠ΅Π»Ρ ΠΏΠ°ΡΡΠ΅ΡΠ½ΠΎΠ² ΠΈΠ·, GRAPS ΠΏΠ°ΡΡΠ΅ΡΠ½Ρ Π½Π΅ ΠΈΠΌΠ΅ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½Π½ΠΎΠΉ ΡΡΡΡΠΊΡΡΡΡ, ΡΠ΅ΡΠΊΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ΅ΡΠ°Π΅ΠΌΠΎΠΉ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ, Π° Π»ΠΈΡΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π½ΡΠ΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Ρ/ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ/ΠΏΡΠΈΠ½ΡΠΈΠΏΡ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅ ΠΏΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠΈ Π΄ΠΈΠ·Π°ΠΉΠ½Π° ΡΠΈΡΡΠ΅ΠΌΡ.
GRASP ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· 5 ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΠΈ 4 Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ°Π±Π»ΠΎΠ½ΠΎΠ².
Information Expert
Creator
Controller
Low Coupling
High Cohesion
Pure Fabrication
Indirection
Polymorphism
Protected Variations
Π¨Π°Π±Π»ΠΎΠ½ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ Π±Π°Π·ΠΎΠ²ΡΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ:
ΠΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ Π΄ΠΎΠ»ΠΆΠ½Π° Π±ΡΡΡ Π½Π°Π·Π½Π°ΡΠ΅Π½Π° ΡΠΎΠΌΡ, ΠΊΡΠΎ Π²Π»Π°Π΄Π΅Π΅Ρ ΠΌΠ°ΠΊΡΠΈΠΌΡΠΌΠΎΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠΉ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ β ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΌΡ ΡΠΊΡΠΏΠ΅ΡΡΡ.
ΠΡΠΎΡ ΡΠ°Π±Π»ΠΎΠ½ β ΡΠ°ΠΌΡΠΉ ΠΎΡΠ΅Π²ΠΈΠ΄Π½ΡΠΉ ΠΈ Π²Π°ΠΆΠ½ΡΠΉ ΠΈΠ· Π΄Π΅Π²ΡΡΠΈ. ΠΡΠ»ΠΈ Π΅Π³ΠΎ Π½Π΅ ΡΡΠ΅ΡΡΡ β ΠΏΠΎΠ»ΡΡΠΈΡΡΡ "ΡΠΏΠ°Π³Π΅ΡΡΠΈ-ΠΊΠΎΠ΄", Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΡΡΡΠ΄Π½ΠΎ ΡΠ°Π·ΠΎΠ±ΡΠ°ΡΡΡΡ.
ΠΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π±Π»ΠΎΠ½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠΊΡΠΏΠ΅ΡΡ ΠΏΠΎΠ²ΡΡΠ°Π΅Ρ ΡΠ²ΡΠ·Π½ΠΎΡΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ ΠΈ Π½Π΅ ΠΏΡΠΎΡΠΈΠ²ΠΎΡΠ΅ΡΠΈΡ ΡΠ²ΠΎΠΉΡΡΠ²Ρ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΡΡΠΈΠΈ.
Π ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΠΏΡΠΈΠΌΠ΅ΡΠ΅ Π½Π° C# ΠΊΠ»Π°ΡΡ Customer ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΡΠ»ΠΊΠΈ Π½Π° Π²ΡΠ΅ Π·Π°ΠΊΠ°Π·Ρ ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΡΠΈΡΡ ΡΡΡ ΠΌΠ΅ΡΠΎΠ΄ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΠ΅ΡΠ° ΠΎΠ±ΡΠ΅ΠΉ ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ Π·Π°ΠΊΠ°Π·ΠΎΠ²:
Creator ΠΈΠ»ΠΈ Π‘ΠΎΠ·Π΄Π°ΡΠ΅Π»Ρ β ΡΡΡΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΠΈ ΡΠ°ΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ ΡΠΎΠ·Π΄Π°Π΅Ρ Π΄ΡΡΠ³ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ. Π‘ΡΠ°Π·Ρ Π½Π°ΠΏΡΠ°ΡΠΈΠ²Π°Π΅ΡΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ Ρ Π°Π±ΡΡΡΠ°ΠΊΡΠ½ΠΎΠΉ ΡΠ°Π±ΡΠΈΠΊΠΎΠΉ.
ΠΠΎ ΡΡΡΠΈ ΡΠ°Π±Π»ΠΎΠ½ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΠ±ΡΡΡΠ°ΠΊΡΠ½Π°Ρ ΡΠ°Π±ΡΠΈΠΊΠ° (ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΠΊΠΎΠ½ΡΠ΅Π½ΡΡΠΈΡΡΠ΅ΡΡΡ Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΠΊΠ»Π°ΡΡΠ΅) ΡΡΠΎ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π° ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Ρ.
ΠΠΎ Π΅ΡΡΡ ΡΡΠ΄ ΠΌΠΎΠΌΠ΅Π½ΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ, ΠΊΠΎΠ³Π΄Π° ΠΌΡ Π½Π°Π΄Π΅Π»ΡΠ΅ΠΌ ΠΎΠ±ΡΠ΅ΠΊΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡΡ ΡΠΎΠ·Π΄Π°ΡΠ΅Π»Ρ:
Π‘ΠΎΠ·Π΄Π°ΡΠ΅Π»Ρ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ»ΠΈ Π°Π³ΡΠ΅Π³ΠΈΡΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ;
Π‘ΠΎΠ·Π΄Π°ΡΠ΅Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ ;
Π‘ΠΎΠ·Π΄Π°ΡΠ΅Π»Ρ Π·Π½Π°Π΅Ρ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ ;
Π‘ΠΎΠ·Π΄Π°ΡΠ΅Π»Ρ Π·Π°ΠΏΠΈΡΡΠ²Π°Π΅Ρ ΡΠΎΠ·Π΄Π°Π²Π°Π΅ΠΌΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ
Π‘ΠΎΠ·Π΄Π°ΡΠ΅Π»Ρ ΠΈΠΌΠ΅Π΅Ρ Π΄Π°Π½Π½ΡΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π»Ρ A
ΠΠΎΠ·Π²ΡΠ°ΡΠ°ΡΡΡ ΠΊ ΠΏΡΠΈΠΌΠ΅ΡΡ Ρ Customer'ΠΎΠΌ, ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ .NET ΠΊΠΎΠ΄:
Π¨Π°Π±Π»ΠΎΠ½ Ρontroller ΠΏΡΠΈΠ·Π²Π°Π½ ΡΠ΅ΡΠΈΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΈ Π»ΠΎΠ³ΠΈΠΊΠΈ Π² ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΠ²Π½ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ. ΠΡΠΎ Π½Π΅ ΡΡΠΎ ΠΈΠ½ΠΎΠ΅, ΠΊΠ°ΠΊ Ρ ΠΎΡΠΎΡΠΎ ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠΉ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΠΈΠ· MVC ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΡ. ΠΠΎΠ½ΡΡΠΎΠ»Π΅Ρ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π·Π°ΠΏΡΠΎΡΠΎΠ² ΠΈ ΡΠ΅ΡΠ°Π΅Ρ ΠΊΠΎΠΌΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π΅Π»Π΅Π³ΠΈΡΠΎΠ²Π°ΡΡ Π·Π°ΠΏΡΠΎΡΡ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. ΠΡΠ»ΠΈ ΠΎΠ±ΠΎΠ±ΡΠΈΡΡ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Ρontroller, ΡΠΎ ΠΎΠ½ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΎΡΠ²Π΅ΡΠ°ΡΡ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΡ Π²Ρ ΠΎΠ΄Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ.
High Cohesion ΠΏΡΠΈΠ½ΡΠΈΠΏ Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠΎΠΌ, ΡΡΠΎ ΠΊΠ»Π°ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΡΠ°ΡΠ°ΡΡΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΊΠ°ΠΊ ΠΌΠΎΠΆΠ½ΠΎ ΠΌΠ΅Π½ΡΡΠ΅ Π½Π΅ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΡ Π΄Π»Ρ Π½Π΅Π³ΠΎ Π·Π°Π΄Π°Ρ, ΠΈ ΠΈΠΌΠ΅ΡΡ Π²ΠΏΠΎΠ»Π½Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΡ ΠΎΠ±Π»Π°ΡΡΡ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ. Π’ΠΎΠ»ΡΠΊΠΎ Ρ ΠΎΠΏΡΡΠΎΠΌ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²ΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρ High Cohesion ΠΈ Low Coupling. ΡΡΠΈΡΠ°Π΅ΡΡΡ ΡΡΠΎ Low Coupling ΠΈ High Cohesion) ΡΡΠΎ ΠΈΠ½Ρ ΠΈ ΡΠ½Ρ ΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΠ. ΠΠ΅ΠΊΠΎΡΡΠ΅ΠΊΡΠ½ΠΎΠ΅ ΡΠ·Π°Π½ΠΈΠ΅ High Cohesion ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ Low Coupling ΠΈ Π½Π°ΠΎΠ±ΠΎΡΠΎΡ.
Pure Fabrication ΠΈΠ»ΠΈ ΡΠΈΡΡΠ°Ρ Π²ΡΠ΄ΡΠΌΠΊΠ°, ΠΈΠ»ΠΈ ΡΠΈΡΡΠΎΠ΅ ΡΠΈΠ½ΡΠ΅Π·ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΠ΄Π΅ΡΡ ΡΡΡΡ Π² Π²ΡΠ΄ΡΠΌΠ°Π½Π½ΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΊΡΠ΅. ΠΠ½Π°Π»ΠΎΠ³ΠΎΠΌ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΡΠ°Π±Π»ΠΎΠ½ Service (ΡΠ΅ΡΠ²ΠΈΡ) Π² ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠ΅ DDD.
ΠΠ°ΠΊΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΡΠ΅ΡΠ°Π΅Ρ Pure Fabrication?
Π£ΠΌΠ΅Π½ΡΡΠ°Π΅Ρ Π·Π°ΡΠ΅ΠΏΠ»Π΅Π½ΠΈΠ΅ ( Low Coupling);
ΠΠΎΠ²ΡΡΠ°Π΅Ρ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΡΡΡ (High Cohesion) ;
Π£ΠΏΡΠΎΡΠ°Π΅Ρ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΊΠΎΠ΄Π°.
ΠΠ΅ ΡΠΎΠ²ΡΠ΅ΠΌ ΠΏΠΎΠ½ΡΡΠ½ΠΎ?
ΠΠ°Π²Π°ΠΉΡΠ΅ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΏΡΠΈΠΌΠ΅Ρ ΠΈ Π²ΡΠ΅ ΡΡΠ°Π½Π΅Ρ Π½Π° ΡΠ²ΠΎΠΈ ΠΌΠ΅ΡΡΠ° ^_^
Π ΠΏΡΠΈΠΌΠ΅ΡΡ Ρ Π²Π°Ρ Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡ Customer
ΠΈ ΡΠ»Π΅Π΄ΡΡ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΡΠΊΡΠΏΠ΅ΡΡ Π²Ρ Π½Π°Π΄Π΅Π»ΠΈΠ»ΠΈ Π΅Π³ΠΎ Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ ΠΊΠΎΡΠΎΡΡΡ ΠΌΡ ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°Π»ΠΈ Π²ΡΡΠ΅, ΠΊΠ°ΠΊ Π²Ρ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΠ΅ ΡΠΎΡ
ΡΠ°Π½Π΅Π½ΠΈΠ΅ Customera
Π² ΠΠ?
Π’Π°ΠΊ Π²ΠΎΡ ΡΠ»Π΅Π΄ΡΡ Pure Fabrication ΠΏΡΠΈΠ½ΡΠΈΠΏΡ, ΠΌΡ ΡΠΎΠ·Π΄Π°Π΄ΠΈΠΌ Π‘Π΅ΡΠ²ΠΈΡ ΠΈΠ»ΠΈ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π΄ΠΎΡΡΠ°Π²Π°ΡΡ ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΡΡ ΡΠ°ΠΊΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ .
Indirection ΠΈΠ»ΠΈ ΠΏΠΎΡΡΠ΅Π΄Π½ΠΈΠΊ. ΠΠΎΠΆΠ½ΠΎ ΡΡΠΎΠ»ΠΊΠ½ΡΡΡΡΡ Ρ ΡΠ°ΠΊΠΈΠΌ Π²ΠΎΠΏΡΠΎΡΠΎΠΌ: Β«ΠΠ°ΠΊ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΠΈ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΡΠΈΠ»ΡΠ½ΠΎΠΉ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΡΡΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ, Π΄Π°ΠΆΠ΅ Π΅ΡΠ»ΠΈ ΠΎΠ΄ΠΈΠ½ ΠΊΠ»Π°ΡΡ Π½ΡΠΆΠ΄Π°Π΅ΡΡΡ Π² ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π΅ (ΡΠ΅ΡΠ²ΠΈΡΠ°Ρ ), ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠ»Π°ΡΡ?Β»
Π ΠΏΡΠΈΠΌΠ΅ΡΡ Ρ Π½Π°Ρ Π±ΡΠ» ΠΊΠΎΠ΄:
ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΠΏΠ΅ΡΠ΅ΠΏΠΈΡΠ°ΡΡ ΡΡΠΎΡ ΠΊΠΎΠ΄ Ρ ΠΏΠΎΠΌΠΎΡΡΡ mediator Π΄Π»Ρ ΡΠ²ΡΠ·ΠΊΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ:
ΠΠ±ΡΠ°ΡΠΈΡΠ΅ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅. ΠΠΎΡΡΠ΅Π΄Π½ΠΈΠΊ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ "low coupling", Π½ΠΎ ΡΠ½ΠΈΠΆΠ°Π΅Ρ ΡΠΈΡΠ°Π±Π΅Π»ΡΠ½ΠΎΡΡΡ ΠΈ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ Π²ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ. ΠΡ Π½Π΅ Π·Π½Π°Π΅ΡΠ΅, ΠΊΠ°ΠΊΠΎΠΉ ΠΊΠ»Π°ΡΡ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ ΠΊΠΎΠΌΠ°Π½Π΄Ρ ΠΈΠ· ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Controller. ΠΡΠΎ ΠΊΠΎΠΌΠΏΡΠΎΠΌΠΈΡΡ.
ΠΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΎΠ΄Π½ΠΎΠΈΠΌΠ΅Π½Π½ΡΠ΅ ΠΏΡΠ±Π»ΠΈΡΠ½ΡΠ΅ ΠΌΠ΅ΡΠΎΠ΄Ρ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ ΠΊΠ»Π°ΡΡΠ°ΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΡΠΈ ΠΎΠ΄Π½ΠΎΠΌ ΠΈ ΡΠΎΠΌ ΠΆΠ΅ Π²ΡΠ·ΠΎΠ²Π΅. Π’ΠΎ Π΅ΡΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ ΠΊΠ»Π°ΡΡΠΎΠ² Square ΠΈ Circle ΠΌΠΎΠ³ΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ°ΡΡΡΡ(ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΌΠ΅ΡΠΎΠ΄ render) ΠΏΠΎ ΡΠ°Π·Π½ΠΎΠΌΡ Π½Π΅ΡΠΌΠΎΡΡΡ Π½Π΅ ΡΠΎ, ΡΡΠΎ ΠΎΠ½ΠΈ ΠΎΠ±Π° ΠΏΠΎΠ΄ΠΊΠ»Π°ΡΡΡ Shape, ΠΌΠ΅ΡΠΎΠ΄ render ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π² Shape. (Overriding).
ΠΡΠΎΠ±Π»Π΅ΠΌΠ°: ΠΠ°ΠΊ ΡΠΏΡΠΎΠ΅ΠΊΡΠΈΡΠΎΠ²Π°ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΡ, ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΡΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΡΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π½Π΅ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΡ ΡΡΠΈΡ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π½Π΅ ΠΎΠΊΠ°Π·ΡΠ²Π°Π»ΠΈ Π½Π΅ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²Π»ΠΈΡΠ½ΠΈΡ Π½Π° Π΄ΡΡΠ³ΠΈΠ΅ ΡΠ»Π΅ΠΌΠ΅Π½ΡΡ?
Π Π΅ΡΠ΅Π½ΠΈΠ΅: ΠΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΡΠΎΡΠΊΠΈ ΠΏΡΠΎΠ³Π½ΠΎΠ·ΠΈΡΡΠ΅ΠΌΠΎΠ³ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ»ΠΈ Π½Π΅ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΡΡΠΈ, ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΠΎΠ±ΡΠ·Π°Π½Π½ΠΎΡΡΠΈ ΠΏΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π²ΠΎΠΊΡΡΠ³ Π½ΠΈΡ .
ΠΠΎ ΠΌΠ½Π΅Π½ΠΈΡ ΠΌΠ½ΠΎΠ³ΠΈΡ ΡΡΠΎ ΡΠ°ΠΌΡΠΉ Π²Π°ΠΆΠ½ΡΠΉ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΠΊΠΎΡΠΎΡΡΠΉ ΠΊΠΎΡΠ²Π΅Π½Π½ΠΎ ΡΠ²ΡΠ·Π°Π½ Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΠΌΠΈ ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°ΠΌΠΈ GRASP. Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΎΠ΄Π½ΠΈΠΌ ΠΈΠ· Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π²Π°ΠΆΠ½ΡΡ ΠΏΠΎΠΊΠ°Π·Π°ΡΠ΅Π»Π΅ΠΉ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΠΊΠΎΠ΄Π° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΡΠΎΡΡΠΎΡΠ° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΉ. ΠΠ°ΠΊ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΠΎΡΡ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ, ΠΌΡ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π³ΠΎΡΠΎΠ²Ρ ΠΊ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΠΌΠ΅Π½ΡΡΡΠΈΠΌΡΡ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡΠΌ. ΠΡΠΎ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Β«nice to haveΒ» Π°ΡΡΠΈΠ±ΡΡΠΎΠΌ - ΡΡΠΎ Β«must-haveΒ» Π² Π»ΡΠ±ΠΎΠΌ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΈ Π½Π°ΡΠ° ΠΎΠ±ΡΠ·Π°Π½Π½ΠΎΡΡΡ ΠΊΠ°ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ² ΠΈ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΠΎΡΠΎΠ² Π½Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΡΡΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ.
ΠΠΎΠ΄ΡΠΎΠ±Π½Π΅Π΅ ΠΏΡΠΎ ΠΊΠΎΠ½ΡΡΠΎΠ»Π»Π΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΈΡΠ°ΡΡ Π² ΡΡΠ°ΡΡΠ΅:
ΠΡΠ»ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΡ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠ²ΡΠ·Π°Π½Π½Ρ, ΡΠΎ Π»ΡΠ±ΠΎΠΉ ΠΈΡ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΈΠ²ΠΎΠ΄ΠΈΡ ΠΊ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌ Π²ΠΎ Π²ΡΠ΅Ρ ΡΠ²ΡΠ·Π°Π½Π½ΡΡ ΠΎΠ±ΡΠ΅ΠΊΡΠ°Ρ . Π ΡΡΠΎ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ ΠΈ ΠΏΠΎΡΠΎΠΆΠ΄Π°Π΅Ρ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. Low coupling ΠΊΠ°ΠΊ ΡΠ°Π· Π³ΠΎΠ²ΠΎΡΠΈΡ ΠΎ ΡΠΎΠΌ ΡΡΠΎ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ, ΡΡΠΎΠ±Ρ ΠΊΠΎΠ΄ Π±ΡΠ» ΡΠ»Π°Π±ΠΎ ΡΠ²ΡΠ·Π°Π½ ΠΈ Π·Π°Π²ΠΈΡΠ΅Π» ΡΠΎΠ»ΡΠΊΠΎ ΠΎΡ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΉ. Π‘Π»Π°Π±Π°Ρ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΡΡΡ ΡΠ°ΠΊ ΠΆΠ΅ Π²ΡΡΡΠ΅ΡΠ°Π΅ΡΡΡ Π² ΠΊΠ°ΠΊ The Dependency Inversion Principleβ (DIP) ΠΈ ΡΠ»Π°Π±Π°Ρ ΡΠ²ΡΠ·Π°Π½Π½ΠΎΡΡΡ ΠΏΠΎ ΡΡΡΠΈ ΡΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Dependency Injection ΠΏΡΠΈΠ½ΡΠΈΠΏΠ°. ΠΠΎΠ³Π΄Π° ΠΌΡ ΡΡ ΠΎΠ΄ΠΈΠΌ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΠΈ Π°Π±ΡΡΡΠ°Π³ΠΈΡΡΠ΅ΠΌΡΡ Π½Π° ΡΡΠΎΠ²Π½ΡΡ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠΎΠ²(ΠΊΠΎΡΠΎΡΡΠ΅ Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄ΠΌΠ΅Π½ΡΡΡ Π½ΡΠΆΠ½ΡΠΌΠΈ Π½Π°ΠΌ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΠΌΠΈ), ΡΠΎΠ³Π΄Π° ΠΊΠΎΠ΄ Π½Π΅ Π·Π°Π²ΡΠ·Π°Π½ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
ΠΠΎ ΡΡΡΠΈ High Cohesion ΠΎΡΠ΅Π½Ρ ΡΠ΅ΡΠ½ΠΎ ΡΠ²ΡΠ·Π°Π½Π½Π° Ρ Single Responsibility Principleβ (SRP) Ρ ΠΏΡΠΈΠ½ΡΠΈΠΏΠΎΠ². High Cohesion ΠΏΠΎΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΡΠΎΠ±Π»ΡΠ΄Π΅Π½ΠΈΡ SRP.
In the contexts of , and , the term service refers to a functionality or a set of software functionalities (such as the retrieval of specified information or the execution of a set of operations) with a purpose that different can reuse for different purposes, together with the policies that should control its usage (based on the identity of the client requesting the service, for example).
Π Π΅ΡΠ΅Π½ΠΈΠ΅: Π²ΠΎΠ·Π»ΠΎΠΆΠΈΡΠ΅ ΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎΡΡΡ Π½Π° ΠΏΡΠΎΠΌΠ΅ΠΆΡΡΠΎΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ, ΡΡΠΎΠ±Ρ ΠΎΠ½ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ» ΡΠ²ΡΠ·Ρ ΠΌΠ΅ΠΆΠ΄Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠ°ΠΌΠΈ ΠΈΠ»ΠΈ ΡΠ»ΡΠΆΠ±Π°ΠΌΠΈ, ΡΡΠΎΠ±Ρ ΠΎΠ½ΠΈ Π½Π΅ Π±ΡΠ»ΠΈ Π½Π°ΠΏΡΡΠΌΡΡ ΡΠ²ΡΠ·Π°Π½Ρ. Π’Π°ΠΊΠΎΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ
ΠΡΠΈΠ½ΡΠΈΠΏ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ½ΠΎΠ²ΠΎΠΏΠΎΠ»Π°Π³Π°ΡΡΠΈΠΌ Π² ΠΠΠ. Π ΡΡΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅ ΠΏΡΠΈΠ½ΡΠΈΠΏ ΡΠ΅ΡΠ½ΠΎ ΡΠ²ΡΠ·Π°Π½ Ρ ΠΡΠΎ ΡΠ°ΠΌΡΠΉ ΡΡΠΊΠΈΠΉ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌΠ°.