ืืขืชืื ืงืจืืืืช ืื ื ืคืืืฉ ืืคืชืืื ืฉืื ืฉืืขื ืขื ืขืงืจืื ืืช SOLID (ืื ืื ื
ืื ื ืืืืืจืื: ืืื ืงืืจืื Habr - ืื ืื ืฉื 10 ืจืืื ืืขืช ืืจืฉืื ืืื ืงืืจืก Skillbox ืืืืฆืขืืช ืงืื ืืงืืืื ืฉื Habr.
Skillbox ืืืืืฆื: ืงืืจืก ืืื ืืื ืืงืืื
"ืืคืชื ื'ืืืื" .
ืืืฉ (ืื ืชืืืืจ ืขื ืขืฆืื)
ืขืืงืจืื ืคืฉืื ืืืื, ืฉืืืืชื ืืจืืจื ืืืฉื: "ืื ืชืืืืจ ืขื ืขืฆืื". ืขืืืจ ืืชืื ืช, ืืฉืืขืืช ืืืืจ ืืื ืืฆืืจื ืืืืื ืข ืืฉืืคืื ืงืื, ืืื ืื ืืช ืืืืืื ืืช ืืืฉืชืืฉ ืืืคืฉืื ืืขืืืืชื.
ืื ืืฉ ืฉื ื ืงืืขืื ืืืืจืื ืืงืื, ืืฉ ืืฉืื ืืืชื ืืฉืืื ืืืช. ืื ื ืขืฉื ืฉืืืืฉ ืืขืจื ืืงืืื ืืืชืจ ืืคืขื ืืืช, ืืืื ืืืืืจ ืืืชื ืืงืืืข ืฆืืืืจื.
ืื ืืืจืื ืขื ืื ืช ืืคืฉื ืืช ืืงืื ืืืืงื ืขื ืืชืืืืงื, ืืื ืืืืจื ืืขืืงืจืืช ืฉื OOP. ืื ืืชื ืื ืฆืจืื ืืขืฉืืช ืฉืืืืฉ ืืชืจ ืืืืืื, ืืืืืื ืฉืืืชื ืงืื ืื ืืขืืืจ ืืืืืช ืขื ื- OrderId ืื-SSN.
ืืืกืฃ ืฉืื ืืืื
ืืืฆืจื ืืชืืื ื ืฉื ืจืื ืืืืจืืช ืืชืคืชืืื ืื ืืืื. ืื ืืืืจ ืฉืฆืจืื ืืขืฉืืช ืฉืื ืืืื ืืงืื, ืฆืจืื ืืชืืื ืื. ืืชื ืืืื ืืืงื ืขื ืืืื ืืืืฆืขืืช ืื ืงืคืกืืืฆืื. ืื ืืืคืฉืจ ืื ืืืืืง ืืฆืืจื ืืขืืื ืืืชืจ ืืืชืืืง ืืช ืืกืืก ืืงืื ืืงืืื ืฉืื.
ืื ืืชื ืืืชื ืื'ืืืื, ืื
ืขืงืจืื ืคืชืื/ืกืืืจ
ื ืืชื ืืืืืจ ืขืืงืจืื ืื ืืงืืืช ืขื ืืื ืงืจืืืช ืืืฆืืจื ืืืื: "ืืฉืืืืช ืชืืื ื (ืืืืงืืช, ืืืืืืื, ืคืื ืงืฆืืืช ืืื') ืฆืจืืืืช ืืืืืช ืคืชืืืืช ืืืจืืื, ืื ืกืืืจืืช ืืฉืื ืื." ืืคืืขื, ืื ืืืืจ ืฉืื ืืืืืื ืืืคืฉืจ ืืฉื ืืช ืืช ืืชื ืืืืชื ืืืื ืืฉื ืืช ืืช ืงืื ืืืงืืจ.
ืืขืืงืจืื ืืฉืื ืืืฉืจ ืฉืื ืืืื ืืงืื ืืืงืืจ ืืืจืฉืื ืขืืืื ืงืื, ืืืืงืช ืืืืืืช ืื ืืืื ืืืจืื. ืงืื ืฉืขืืงื ืืืจ ืืขืืงืจืื ืืคืชืื/ืกืืืจ ืื ืืฉืชื ื ืืฉืืื ืืืจืื, ืื ืฉืืฉ ืืจืื ืคืืืช ืืขืืืช ืืืชื.
ืื ื ืืืืื ืืงืื ืฉืืคืจ ืืช ืืขืืงืจืื ืืื.
ืื ืืชื ืฆืจืื ืืฉื ืืช ืืฉืื ืื, ืื ืืืงื ืืจืื ืืื, ืฉืื ืื ืืืงื ืืงืื ืฉืืฉ ืืื ืงืฉืจ ืขื ืืคืจืืื ื ืืจืฆืื ืืฆืืจืื ืืืฉืชื ืืช.
ืืื, ืคืชืืืืช-ืกืืืจื ืืื ืืื ืืขืงืจืื ืืช ืฉื SOLID.
ืขืืงืจืื ืืืจืืืช ืืืืื (SRP)
ืขืืงืจืื ื ืืกืฃ ืืืกื SOLID. ืืื ืงืืืข ืื "ืืฉ ืจืง ืกืืื ืืืช ืฉืืืจืืช ืืฉืื ืื ืืืขืื." ืืฉืืขืืจ ืคืืชืจ ืจืง ืืขืื ืืืช. ืืืื ืืืืืช ืฉืืฉ ืื ืืื ืฉืืืืช, ืืื ืื ืืืช ืืื ืืฉืืฉืช ืจืง ืืื ืืคืชืืจ ืืขืื ื ืคืืฆื. ืื ืืฉืืืืช ืืืืืคืืื ืื ืฆืจืืืื ืืฉืจืช ืจืง ืืช ืื.
ืืขืจื ืฉื ืขืืงืจืื ืื ืืื ืฉืืื ืืฉืืจืจ ืืช ืืฆืืืื ืืื ืจืืื ืืชืืื ื ืืืืื ืืงืื. ืื ืืชื ืืืกืืฃ ืืืชืจ ืืคืื ืงืฆืืื ืืืืช ืืืช ืืืืืงื, ืื ืืฆืื ืงืฉืจ ืืื ืฉืชื ืืคืื ืงืฆืืืช. ืืคืืื, ืื ืชืฉื ื ืืื ืืื, ืืฉ ืกืืืื ืืืื ืืืจืืก ืืช ืืฉื ื, ืฉืืืืืจ ืืจืืฉืื. ืืื ืืืืจ ืืืืืื ืืช ืืืืืจื ืืืืืงืืช ืืื ืืืืืช ืืช ืื ืืืขืืืช ืืจืืฉ.
ืขืงืจืื ืืืคืื ืชืืืช (DIP)
ืืืขืื ืืื ืืืืื ืืงืื ืฉืื AppManager ืชืืื ื-EventLogWriter, ืืฉืจ ืืชืืจื ืงืฉืืจ ืืืืคื ืืืืง ืขื AppManager. ืื ืืชื ืฆืจืื ืืจื ืืืจืช ืืืฆืื ืืืืขื, ืืื ืื ืื ืคืืฉ, SMS ืื ืืื"ื, ืืชื ืฆืจืื ืืฉื ืืช ืืช ืืืืงืช AppManager.
ื ืืชื ืืคืชืืจ ืืช ืืืขืื ืืืืฆืขืืช DIP. ืืื, ืืืงืื AppManager, ืื ื ืืืงืฉืื EventLogWriter, ืืฉืจ ืืืื ืืืืฆืขืืช ืืืกืืจืช.
DIP ืืืคืฉืจ ืืืืืืฃ ืืงืืืช ืืืืืืื ืืืืืื ืืืืจืื ืขื ืืื ืฉืื ืื ืืืืื ืืชืืืช. ืื ืืืคืฉืจ ืืฉื ืืช ืืืืื ืืื ืืืื ืืืฉืคืืข ืขื ืืืืจืื.
ืืจืื ืืืงืื ืืจืืฉื
ืืฉื ื ืฉืชื ืืจืืื ืขืืงืจืืืช ืืฉืืืืฉ ืืืืจ ืืงืื: ืชืืจืฉื ืืืจืื, ืฉืืฉืชืืื ืืชืจืื ืืช ืืืกืจืื ืืช ืืฉืืื. ืืืจื ืืื ืืฉื ื ืืืขืืฃ ืื ืืื ืืืืฉ ืืืชืจ.
ืงืืืคืืืืฆืื ื ืืชื ืช ืื ืืช ืืืืืืช ืืฉื ืืช ืืช ืืืชื ืืืืช ืฉื ืืืืงื ืืืื ืจืืฆื ืขื ืืื ืืืืจืช ืืืืคืืื ืื ืฉืื. ืืขืช ืืืฉืื ืืืฉืงืื, ื ืขืฉื ืฉืืืืฉ ืืคืืืืืืจืคืืื, ืื ืฉื ืืชื ืืืฉืื ืืืืฉ ืืืชืจ.
ืืคืืื ืืคืงืืืื ื'ืืืื ืืืช ื'ืืฉืืข ืืืื ืืืืขืฅ ืืืืืจืช ืืจืื ืขื ืคื ื ืืจืืฉื.
ืขืืงืจืื ืืืืคื ืฉื ืืจืืจื ืืืกืงืื (LSP)
ืขืืงืจืื ื ืืกืฃ ืืชืื ืขืจืืช ืืืืื SOLID. ืืื ืงืืืข ืฉืชืชื ืกืืืื ืืืืืื ืืืืืช ื ืืชื ืื ืืืืืคื ืขืืืจ ืืืคืืก ืืขื. ืืืืืจ, ืฉืืืืช ืืคืื ืงืฆืืืช ืฉืขืืืืืช ืขื ืืืืงืช-ืขื ืฆืจืืืืช ืืืืืช ืืกืืืืืช ืืขืืื ืืื ืืขืืืช ืขื ืืืืงืืช ืืืฉื ื ืฉืื.
LSP ืงืฉืืจ ืื ืืขืงืจืื ืืืืจืืืช ืืืืืื ืืื ืืขืงืจืื ืืืืจืืืช ืืืฉืืชืคืช. ืื ืืืืงื ืืกืคืงืช ืืืชืจ ืคืื ืงืฆืืื ืืืืช ืืืฉืจ ืชืช-ืืืืงื, ืื ืืืืจืื ื ืื ืชืชืืื ืืืืง ืืืคืื ืงืฆืืื ืืืืช, ืชืื ืืคืจื ืฉื ืขืืงืจืื ืื.
ืื ื ืงืืข ืงืื ืฉืกืืชืจ ืืช LSP.
ืฉืืืช ืืฉืื (ืืืื r) ืืืฉืืช ืืช ืืฉืื ืฉื ืืืื. ืืชืืื ืืช ืชืชืจืกืง ืืืืจ ืืคืขืืช Square ืื Square ืืื ืื ืืืื ืืื. ืขื ืคื ืขืงืจืื ื-LSP, ืคืื ืงืฆืืืช ืืืฉืชืืฉืืช ืืืคื ืืืช ืืืืืงืืช ืืกืืก ืฆืจืืืืช ืืืืืช ืืกืืืืืช ืืืฉืชืืฉ ืืืืืืืงืืื ืฉื ืืืืงืืช ื ืืืจืืช ืืื ืืืจืืืช ื ืืกืคืืช.
ืขืืงืจืื ืื, ืฉืืื ืืืืจื ืกืคืฆืืคืืช ืฉื ืชืช-ืกืื, ืืืฆืข ืขื ืืื ืืจืืจื ืืืกืงืื ืืืจืฆืื ืืจืืืืช ืืืืขืืื ืืฉื ืช 1987 ืฉืืืชืจืชื "ืืคืฉืืช ื ืชืื ืื ืืืืจืจืืื", ืืืืื ืฉืื.
ืขืืงืจืื ืคืืฆืื ืืืฉืง (ISP)
ืขืงืจืื ืืืฆืง ื ืืกืฃ. ืืคืื, ืืื ืืืืฉื ืืืฉืง ืฉืื ื ืขืฉื ืื ืฉืืืืฉ. ืฉืืืจื ืขื ืขืืงืจืื ืื ืขืืืจืช ืืืขืจืืช ืืืืฉืืจ ืืืืฉื ืืืชืืืื ื-refactoring ืืืฉืจ ืืชืืฆืขืื ืฉืื ืืืื ืืืืืืงืช ืืืคืขืื.
ืืจืื, ืืฆื ืื ืืชืจืืฉ ืืืฉืจ ืืืืฉืง ืืืื ืืกืคืจ ืคืื ืงืฆืืืช ืื-ืืื ืืช, ืืืืงืื ืืงืืง ืจืง ืืืืช ืืื.
ืืืืืื ืฉืืชืืืช ืืืฉืง ืืื ืืฉืืื ืงืฉื, ืืฉื ืืช ืืืชื ืืืืจ ืืฉืืืช ืืขืืืื ืืืื ืืฉืืืจ ืืืจ ืืืื ืืชืืจ.
ืืืชืจืื ืฉื ืขืงืจืื ื-ISP ืื'ืืืื ืืื ืฉืงืืื ืื ืืฉ ืืืืฉื ืืช ืื ืืฉืืืืช, ืืจืง ืืืืจ ืืื ื ืืชื ืืืฉืชืืฉ ืืื ืขื ืืื ืืืืงืืช. ืืื, ืืขืืงืจืื ืืืคืฉืจ ืืฆืืฆื ืืช ืืกืคืจ ืืฉืืืืช.
ืชืื ืืช ืขืืืจ ืืืืฉืง, ืื ืืืืฉืื
ืืื ืืื ืืจืืจ ืืืืืชืจืช. ืืืฉืื ืขืืงืจืื ืื ืืืืื ืืืฆืืจืช ืงืื ืืืืฉ ืฉืืืื ืืขืืื ืขื ืื ืืืฉืื ืืืฉ ืฉื ืืืืฉืง.
ืขืืื ืืืฉืชืืฉ ืืกืื ืืืืฉืง ืขืืืจ ืืฉืชื ืื, ืกืืื ืืืืจื ืื ืกืื ืืืจืืืื ื ืฉื ืืฉืืื. ืืืืื ืืื ืืื ืฉืืืืฉ ื-SuperClass ืืื ื-SubClass.
ืื:
List numbers= getNumbers();
ืืื ืื:
ArrayList numbers = getNumbers();
ืื ื ืืืฉืื ืืขืฉื ืฉื ืื ืฉื ืืื ืืขืื.
ืขืงืจืื ืืืฆืื
ืืืืื ื ืคืืฆื ืืื ืฉืืืืช equals() ื-hashCode() ื-Java. ืืืฉืจ ืืฉ ืฆืืจื ืืืฉืืืช ืืื ืฉื ื ืืืืืืงืืื, ืคืขืืื ืื ืืืืฆืืช ืืืืืงื ืืืงืืืื ืืืงืื ืืืงืื.
ืืืชืจืื ืฉื ืืขืืงืจืื ืืื ืฉืืื ืืคืืืืช ืฉื ืงืื ืืคืฉืื ืืืกืืช ืืฉื ืืช ืืชื ืืืืช. ืื ืื ืื ืขื ืืฉืืืช ืืืจืืขืื.
ืื ืืขืงืจืื ืืช ืืืื ืืืคืฉืจืื ืื ืืืชืื ืงืื ืืืืฉ, ืืคื ืืืืื ืืืชืจ ืขื ืืืืืืช ืืืืื ืืฆืืืื ื ืืื. ืืืืื, ืชืืืืจืื ืืืื, ืืื ืืื ืฉืืคืชื ืืฉืชืืฉ ืืคืืขื ืืืืข ืื ืจืืฉ, ืืฉ ืฆืืจื ืืชืจืืื. ืืืืจ ืฉืชืฉืืื ืืขืงืจืื ืืช OOP, ืืฆืขื ืืื ืฉืื ืขืฉืื ืืืืืช ืืืืื ืืคืืกื ืขืืฆืื ืืคืชืจืื ืืขืืืช ืคืืชืื ืชืืื ื ื ืคืืฆืืช.
Skillbox ืืืืืฆื:
- ืงืืจืก ืืขืฉื
"Mobile Developer PRO" .- ืงืืจืก ืืงืืื ืืืฉืืื
"ืื ืชื ื ืชืื ืื ืืคืืืชืื" .- ืงืืจืก ืืขืฉื ืฉื ืชืืื
"ืื ื ืืคืชื ืืชืจืื PRO" .
ืืงืืจ: www.habr.com